File tree Expand file tree Collapse file tree 2 files changed +8
-5
lines changed Expand file tree Collapse file tree 2 files changed +8
-5
lines changed Original file line number Diff line number Diff line change @@ -66,6 +66,7 @@ typedef struct filename_entry {
6666 */
6767static struct {
6868 char name [MAXPATHLEN ]; /* lowercase unversioned file name */
69+ ino_t dir_ino ; /* inode of the directory */
6970 struct timespec lastMTime ; /* modification time of the directory */
7071 int allocated ; /* number of entries in the files array */
7172 int lastUsed ; /* index of the last entry in use in files array */
@@ -3055,11 +3056,13 @@ static int get_version_array(char *dir, char *file)
30553056 * Lisp_errno = errno ;
30563057 return (0 );
30573058 }
3058- if (0 == strcmp (lcased_file , VA .name ) &&
3059+ if (sbuf .st_ino == VA .dir_ino &&
3060+ 0 == strcmp (lcased_file , VA .name ) &&
30593061 sbuf .st_mtim .tv_sec == VA .lastMTime .tv_sec &&
30603062 sbuf .st_mtim .tv_nsec == VA .lastMTime .tv_nsec ) {
30613063 return (1 );
30623064 } else {
3065+ VA .dir_ino = sbuf .st_ino ;
30633066 VA .lastMTime = sbuf .st_mtim ;
30643067 strcpy (VA .name , lcased_file );
30653068 }
Original file line number Diff line number Diff line change @@ -416,11 +416,11 @@ void OP_subrcall(int subr_no, int argnum) {
416416 case sb_LISP_FINISH : {
417417 int status ;
418418 POP_SUBR_ARGS ;
419- if (argnum == 0 || args [ 0 ] == NIL || args [0 ] == ATOM_T )
420- lisp_finish (EXIT_SUCCESS );
421- N_GETNUMBER (args [0 ], status , exit_fail );
419+ if (argnum == 0 || argnum == 1 || ( argnum == 2 && args [1 ] == NIL )) lisp_finish ( EXIT_SUCCESS );
420+ if ( argnum > 2 ) lisp_finish (EXIT_FAILURE );
421+ N_GETNUMBER (args [1 ], status , exit_fail );
422422 lisp_finish (status );
423- exit_fail :
423+ exit_fail :
424424 lisp_finish (EXIT_FAILURE );
425425 break ;
426426 }
You can’t perform that action at this time.
0 commit comments