diff --git a/src/sbbs3/js_socket.c b/src/sbbs3/js_socket.c index 7c0efd58a758243fc54d30e1a7db597444c52a4e..ba4c3b1fd07840b6bb816b6838d8fa87ebd6b61b 100644 --- a/src/sbbs3/js_socket.c +++ b/src/sbbs3/js_socket.c @@ -456,6 +456,7 @@ js_sendfile(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) return(JS_TRUE); len=filelength(file); + /* TODO: Probobly too big for alloca()... also, this is insane. */ if((buf=malloc(len))==NULL) { close(file); return(JS_TRUE); @@ -552,14 +553,13 @@ js_recv(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) if(argc) JS_ValueToInt32(cx,argv[0],&len); - if((buf=(char*)malloc(len+1))==NULL) { + if((buf=(char*)alloca(len+1))==NULL) { JS_ReportError(cx,"Error allocating %u bytes",len+1); return(JS_FALSE); } len = recv(p->sock,buf,len,0); if(len<0) { - free(buf); p->last_error=ERROR_VALUE; *rval = JSVAL_NULL; return(JS_TRUE); @@ -567,7 +567,6 @@ js_recv(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) buf[len]=0; str = JS_NewStringCopyN(cx, buf, len); - free(buf); if(str==NULL) return(JS_FALSE); @@ -646,21 +645,19 @@ js_recvfrom(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) } else { /* String Data */ - if((buf=(char*)malloc(len+1))==NULL) { + if((buf=(char*)alloca(len+1))==NULL) { JS_ReportError(cx,"Error allocating %u bytes",len+1); return(JS_FALSE); } len = recvfrom(p->sock,buf,len,0,(SOCKADDR*)&addr,&addrlen); if(len<0) { - free(buf); p->last_error=ERROR_VALUE; return(JS_TRUE); } buf[len]=0; str = JS_NewStringCopyN(cx, buf, len); - free(buf); if(str==NULL) return(JS_FALSE); @@ -717,13 +714,12 @@ js_peek(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) if(argc) JS_ValueToInt32(cx,argv[0],&len); - if((buf=(char*)malloc(len+1))==NULL) { + if((buf=(char*)alloca(len+1))==NULL) { JS_ReportError(cx,"Error allocating %u bytes",len+1); return(JS_FALSE); } len = recv(p->sock,buf,len,MSG_PEEK); if(len<0) { - free(buf); p->last_error=ERROR_VALUE; *rval = JSVAL_NULL; return(JS_TRUE); @@ -731,7 +727,6 @@ js_peek(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) buf[len]=0; str = JS_NewStringCopyN(cx, buf, len); - free(buf); if(str==NULL) return(JS_FALSE); @@ -763,7 +758,7 @@ js_recvline(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) if(argc) JS_ValueToInt32(cx,argv[0],&len); - if((buf=(char*)malloc(len+1))==NULL) { + if((buf=(char*)alloca(len+1))==NULL) { JS_ReportError(cx,"Error allocating %u bytes",len+1); return(JS_FALSE); } @@ -781,7 +776,6 @@ js_recvline(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) if(!rd) { if(time(NULL)-start>timeout) { - free(buf); dbprintf(FALSE, p, "recvline timeout (received: %d)",i); *rval = JSVAL_NULL; return(JS_TRUE); /* time-out */ @@ -805,7 +799,6 @@ js_recvline(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) buf[i]=0; str = JS_NewStringCopyZ(cx, buf); - free(buf); if(str==NULL) return(JS_FALSE);