diff options
author | Xavier Leroy <xavier.leroy@inria.fr> | 2002-06-18 14:25:49 +0000 |
---|---|---|
committer | Xavier Leroy <xavier.leroy@inria.fr> | 2002-06-18 14:25:49 +0000 |
commit | 926789a144d185744db51252de9a58637c91cea7 (patch) | |
tree | 0167ba69fc1f29f1925baced242c3782b305b2ea /win32caml | |
parent | e308b5656fded8ae40edb778e5fda976f2c8ee90 (diff) | |
download | ocaml-926789a144d185744db51252de9a58637c91cea7.tar.gz |
Erreur dans la lecture de lignes courtes (PR#814)
git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@4935 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
Diffstat (limited to 'win32caml')
-rw-r--r-- | win32caml/ocaml.c | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/win32caml/ocaml.c b/win32caml/ocaml.c index 1bb3828b6f..a72e7c3fae 100644 --- a/win32caml/ocaml.c +++ b/win32caml/ocaml.c @@ -473,19 +473,23 @@ void SendLastLine(HWND hEdit) { int curline = GetCurLineIndex(hEdit); char *p,linebuffer[2048]; + int n; int linescount = GetNumberOfLines(hEdit); - memset(linebuffer,0,sizeof(linebuffer)); *(unsigned short *)linebuffer = sizeof(linebuffer)-1; if (curline != linescount-1) - SendMessage(hEdit,EM_GETLINE,curline,(LPARAM)linebuffer); + n = SendMessage(hEdit,EM_GETLINE,curline,(LPARAM)linebuffer); else - SendMessage(hEdit,EM_GETLINE,curline-1,(LPARAM)linebuffer); - if (linebuffer[0] == '#' && linebuffer[1] == ' ') - memmove(linebuffer,linebuffer+2,strlen(linebuffer)+1); + n = SendMessage(hEdit,EM_GETLINE,curline-1,(LPARAM)linebuffer); + if (n >= 2 && linebuffer[0] == '#' && linebuffer[1] == ' ') { + n -= 2; + memmove(linebuffer, linebuffer+2, n); + } + linebuffer[n] = 0; // Record user input! AddToHistory(linebuffer); - strcat(linebuffer,"\n"); + linebuffer[n] = '\n'; + linebuffer[n+1] = 0; WriteToPipe(linebuffer); if (curline != linescount-1) { // Copy the line sent to the end of the text |