   object *obj = myalloc();
   obj->type = STRING;
   int ch = gfun();
-  if (ch == EOF) return nil;
+  if (ch == -1) return nil;
   object *head = NULL;
   int chars = 0;
-  while ((ch != delim) && (ch != EOF)) {
+  while ((ch != delim) && (ch != -1)) {
     if (ch == '\\') ch = gfun();
     buildstring(ch, &chars, &head);
     ch = gfun();

  #if defined(printgcs)
  int start = Freespace;
  #endif
  markobject(tee); 
  markobject(GlobalEnv);
  markobject(GCStack);
  markobject(form);

  }

  buffer[index] = '\0';
  if (ch == ')' || ch == '(') LastChar = ch;

  if (isnumber) {
    if (base == 10 && result > ((unsigned int)INT_MAX+(1-sign)/2)) 
