summaryrefslogtreecommitdiff
path: root/win32caml
diff options
context:
space:
mode:
authorXavier Leroy <xavier.leroy@inria.fr>2002-06-18 14:25:49 +0000
committerXavier Leroy <xavier.leroy@inria.fr>2002-06-18 14:25:49 +0000
commit926789a144d185744db51252de9a58637c91cea7 (patch)
tree0167ba69fc1f29f1925baced242c3782b305b2ea /win32caml
parente308b5656fded8ae40edb778e5fda976f2c8ee90 (diff)
downloadocaml-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.c16
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