Fossil

View Ticket
Login
2011-06-17
13:37 Fixed ticket [006e1df642]: Error in file_tempname plus 1 other change artifact: 38ab5148c7 user: drh
13:37
Fix the temporary filename generator so that it does not get stuck in a loop. Ticket [006e1df642d6246a03]. check-in: d3a1663a09 user: drh tags: trunk
10:54 New ticket [006e1df642] Error in file_tempname. artifact: 1cc89153d3 user: anonymous

Ticket Hash: 006e1df642d6246a03dc5a3c8db122cc64fda176
Title: Error in file_tempname
Status: Fixed Type: Code_Defect
Severity: Critical Priority:
Subsystem: Resolution: Fixed
Last Modified: 2011-06-17 13:37:20
14.80 years ago
Created: 2011-06-17 10:54:12
14.80 years ago
Version Found In: Check-in [48f5dadafd]
Description:
When "gdiff-command" settings is not empty, Fossil is hungup in
fossil gdiff -r revision --to revision filename

Error in file.c, in file_tempname function. Piece of diff in file.c:

   /* Check that the output buffer is large enough for the temporary file
@@ -653,11 +656,11 @@
     sqlite3_randomness(15, &zBuf[j]);
     for(i=0; i<15; i++, j++){
       zBuf[j] = (char)zChars[ ((unsigned char)zBuf[j])%(sizeof(zChars)-1) ];
     }
     zBuf[j] = 0;
-  }while( access(zBuf,0)==0 );
+  }while( file_size(zBuf)<0 );
 }

Must be

while( file_size(zBuf)>=0 );