TSIA (ChangeLog as well) A+
Name: wd_readline ChangeLog: fixed some line reading functions License: X11 GenDate: 2002/09/09 19:37:35 UTC ModifiedFiles: debugger/debug.l debugger/source.c AddedFiles: =================================================================== RCS file: /home/cvs/cvsroot/wine/wine/debugger/debug.l,v retrieving revision 1.31 diff -u -u -r1.31 debug.l --- debugger/debug.l 13 Aug 2002 18:04:02 -0000 1.31 +++ debugger/debug.l 2 Sep 2002 19:50:02 -0000 @@ -36,7 +36,7 @@ #define YY_INPUT(buf,result,max_size) \ if ( (result = DEBUG_FetchFromLine("Wine-dbg>", buf, max_size)) < 0 ) \ - YY_FATAL_ERROR( "ReadLine() in flex scanner failed" ); + YY_FATAL_ERROR( "FetchFromLine() in flex scanner failed" ); #define YY_NO_UNPUT @@ -227,7 +227,7 @@ do { if (!ReadFile(DEBUG_hParserInput, buf_line, sizeof(buf_line) - 1, &nread, NULL) || nread == 0) - break; + break; buf_line[nread] = '\0'; if (check_nl && len == 0 && nread == 1 && buf_line[0] == '\n') @@ -246,9 +246,7 @@ { *line = HeapReAlloc(GetProcessHeap(), 0, *line, *alloc = 1); **line = '\0'; - strcpy(*line + len, buf_line); - len += nread; - } while (nread == 0 || buf_line[nread - 1] != '\n'); + } /* Remove leading and trailing whitespace from the line */ stripwhite(*line); @@ -294,10 +292,14 @@ size_t len = 0; DEBUG_FetchEntireLine(pfx, &line, &len, FALSE); - len = min(size, len); - memcpy(buf, line, len - 1); + len = strlen(line); + /* remove trailing \n */ + if (len > 0 && line[len - 1] == '\n') len--; + len = min(size - 1, len); + memcpy(buf, line, len); buf[len] = '\0'; - return len - 1; + HeapFree(GetProcessHeap(), 0, line); + return 1; } static char** local_symbols /* = NULL */; Index: debugger/source.c =================================================================== RCS file: /home/cvs/cvsroot/wine/wine/debugger/source.c,v retrieving revision 1.25 diff -u -u -r1.25 source.c --- debugger/source.c 31 Aug 2002 18:45:09 -0000 1.25 +++ debugger/source.c 2 Sep 2002 17:54:57 -0000 @@ -218,11 +218,6 @@ sprintf(zbuf, "Enter path to file '%s': ", sourcefile); DEBUG_ReadLine(zbuf, tmppath, sizeof(tmppath)); - if ( tmppath[strlen(tmppath)-1] == '\n' ) - { - tmppath[strlen(tmppath)-1] = '\0'; - } - if ( tmppath[strlen(tmppath)-1] != '/' ) { strcat(tmppath, "/");