diff --git a/src/sbbs3/js_file.c b/src/sbbs3/js_file.c index 6df0610a5d75b2e34b5e514a4d326816455b4691..d7b84c5c064fc4a51f194eac82f3c94ed39dcea9 100644 --- a/src/sbbs3/js_file.c +++ b/src/sbbs3/js_file.c @@ -406,15 +406,18 @@ js_raw_read(JSContext *cx, uintN argc, jsval *arglist) * required by POSIX. */ fflush(p->fp); - pos = ftell(p->fp); - fd = fileno(p->fp); - lseek(fd, pos, SEEK_SET); - len = read(fileno(p->fp),buf,len); - fseeko(p->fp, pos + (len >= 0 ? len : 0), SEEK_SET); - dbprintf(FALSE, p, "read %u raw bytes",len); - if(len<0) - len=0; - + pos = ftello(p->fp); + if(pos < 0) + len = 0; + else { + fd = fileno(p->fp); + lseek(fd, pos, SEEK_SET); + len = read(fileno(p->fp),buf,len); + fseeko(p->fp, pos + (len >= 0 ? len : 0), SEEK_SET); + dbprintf(FALSE, p, "read %d raw bytes",len); + if(len<0) + len=0; + } JS_RESUMEREQUEST(cx, rc); str = JS_NewStringCopyN(cx, buf, len);