Userland: ls division by zero.

When the terminal app window became smaller than the longest filename,
a division by zero occured while calculating the offset.
This commit is contained in:
marprok 2019-08-20 20:59:55 +03:00 committed by Andreas Kling
commit d4b7b92492
Notes: sideshowbarker 2024-07-19 12:35:11 +09:00

View file

@ -272,7 +272,9 @@ int do_file_system_object_short(const char* path)
if (!print_filesystem_object_short(pathbuf, name.characters(), &nprinted)) if (!print_filesystem_object_short(pathbuf, name.characters(), &nprinted))
return 2; return 2;
int offset = columns % longest_name / (columns / longest_name); int offset = 0;
if (columns > longest_name)
offset = columns % longest_name / (columns / longest_name);
/* The offset must be at least 2 because: /* The offset must be at least 2 because:
* - With each file an aditional char is printed e.g. '@','*'. * - With each file an aditional char is printed e.g. '@','*'.
* - Each filename must be separated by a space. * - Each filename must be separated by a space.