ref: 2a931184d7e0d5a3cea1fa925619b51b69988464
parent: 8ffa802e29ca42eb54cc4b10f8c756ba6275e801
author: phil9 <[email protected]>
date: Tue Oct 11 05:22:04 EDT 2022
fix floating point exception (thanks igor) The logarithm of a negative number is undefined. To store the file length the int data type is not sufficient as the file length is represented by a vlong (see /sys/include/libc.h:657). Overflowing an integer causes it to be interpreted as a negative number, that in turn causes an exception when trying to compute the log of a negative number. To fix the issue the type of the variable storing the largest file length needs to change from int to vlong.
--- a/vdir.c
+++ b/vdir.c
@@ -124,7 +124,8 @@
void
loaddirs(void)
{
- int fd, i, m;
+ int fd, i;
+ vlong m;
fd = open(path, OREAD);
if(fd<0){