From: <no...@so...> - 2002-03-11 14:21:41
|
Patches item #528284, was opened at 2002-03-10 15:52 You can respond by visiting: http://sourceforge.net/tracker/?func=detail&atid=310894&aid=528284&group_id=10894 Category: 35. File System Group: None Status: Open Resolution: None Priority: 9 Submitted By: Mo DeJong (mdejong) Assigned to: Jeffrey Hobbs (hobbs) Summary: Fix filesystem crashed under win98 Initial Comment: I noticed that Tcl is not able to make it through the tests in winFCmd.test without crashing or going into an infinite loop under Windows 98. I created this patch, which fixes the crashes and returns ENOENT when a path like "" is passed in. The comments for these functions state that ENOENT should be returned, but I am not sure that jives with the test cases in winFCmd.test. I would ask that someone run the tests in winFCmd.test under NT to see if this patch changes any of the test results. Further changes to the expected test results may be needed, but I am not sure how the 98/NT thing plays into it just now. Also, this patch changes a check that looked like so: if (tclWinProcs->useWide) { if (((WCHAR *) nativePath)[0] == '\0') { Tcl_SetErrno(ENOENT); return TCL_ERROR; } } else { if (((char *) nativePath)[0] == '\0') { Tcl_SetErrno(ENOENT); return TCL_ERROR; } } to: if (nativePath == NULL || nativePath[0] == '\0') { Tcl_SetErrno(ENOENT); return TCL_ERROR; } I could not see any reason to make this extra useWide check, so I took a peek at the generated ASM: 9: cond = ((WCHAR *) path[0] == '\0'); 0040102A mov eax,dword ptr [path] 0040102D movsx ecx,byte ptr [eax] 00401030 neg ecx 00401032 sbb ecx,ecx 00401034 inc ecx 00401035 mov dword ptr [cond],ecx 10: } else { 00401038 jmp main+38h (00401048) 11: cond = ((char *) path[0] == '\0'); 0040103A mov edx,dword ptr [path] 0040103D movsx eax,byte ptr [edx] 00401040 neg eax 00401042 sbb eax,eax 00401044 inc eax 00401045 mov dword ptr [cond],eax The code certainly looks exactly the same, except for the registers that are used. Since I could not come up with any reason for this extra complexity, I removed it. ---------------------------------------------------------------------- Comment By: Nobody/Anonymous (nobody) Date: 2002-03-11 06:21 Message: Logged In: NO The patch looks good to me -- feel free to apply -- Vince. ---------------------------------------------------------------------- You can respond by visiting: http://sourceforge.net/tracker/?func=detail&atid=310894&aid=528284&group_id=10894 |