diff playtreeparser.c @ 5802:35f19046f809

Portability fix with realloc
author albeu
date Tue, 23 Apr 2002 20:06:00 +0000
parents 8bd1c1e319fb
children 0f5f626e5151
line wrap: on
line diff
--- a/playtreeparser.c	Tue Apr 23 16:29:13 2002 +0000
+++ b/playtreeparser.c	Tue Apr 23 20:06:00 2002 +0000
@@ -49,7 +49,7 @@
     p->iter = p->buffer;
   }
 
-  if(p->stream->eof && p->buffer_end == 0)
+  if(p->stream->eof && (p->buffer_end == 0 || p->iter[0] == '\0'))
     return NULL;
     
   while(1) {
@@ -83,12 +83,14 @@
   }
 
   line_end = ((*(end-1)) == '\r') ? end-1 : end;
-  p->line = (char*)realloc(p->line,line_end - p->iter+1);
-  if(!p->line)
+  if(line_end - p->iter >= 0)
+    p->line = (char*)realloc(p->line,line_end - p->iter+1);
+  else
     return NULL;
-  strncpy(p->line,p->iter,line_end - p->iter);
+  if(line_end - p->iter > 0)
+    strncpy(p->line,p->iter,line_end - p->iter);
   p->line[line_end - p->iter] = '\0';
-  if(end != '\0')
+  if(end[0] != '\0')
     end++;
 
   if(!p->keep) {