Skip to content
Snippets Groups Projects
Commit 6096276b authored by deuce's avatar deuce
Browse files

Use alloca() instead of malloc()/free() where possible.

parent afefa4d2
Branches
Tags
No related merge requests found
...@@ -238,7 +238,7 @@ js_read(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) ...@@ -238,7 +238,7 @@ js_read(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
if(len<0) if(len<0)
len=512; len=512;
if((buf=malloc(len+1))==NULL) if((buf=alloca(len+1))==NULL)
return(JS_TRUE); return(JS_TRUE);
len = fread(buf,1,len,p->fp); len = fread(buf,1,len,p->fp);
...@@ -257,7 +257,7 @@ js_read(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) ...@@ -257,7 +257,7 @@ js_read(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
if(p->uuencoded || p->b64encoded || p->yencoded) { if(p->uuencoded || p->b64encoded || p->yencoded) {
uulen=len*2; uulen=len*2;
if((uubuf=malloc(uulen))==NULL) if((uubuf=alloca(uulen))==NULL)
return(JS_TRUE); return(JS_TRUE);
if(p->uuencoded) if(p->uuencoded)
uulen=uuencode(uubuf,uulen,buf,len); uulen=uuencode(uubuf,uulen,buf,len);
...@@ -266,17 +266,12 @@ js_read(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) ...@@ -266,17 +266,12 @@ js_read(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
else else
uulen=b64_encode(uubuf,uulen,buf,len); uulen=b64_encode(uubuf,uulen,buf,len);
if(uulen>=0) { if(uulen>=0) {
free(buf);
buf=uubuf; buf=uubuf;
len=uulen; len=uulen;
} else
free(uubuf);
} }
str = JS_NewStringCopyN(cx, buf, len); str = JS_NewStringCopyN(cx, buf, len);
free(buf);
if(str==NULL) if(str==NULL)
return(JS_FALSE); return(JS_FALSE);
...@@ -311,7 +306,7 @@ js_readln(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) ...@@ -311,7 +306,7 @@ js_readln(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
return(JS_FALSE); return(JS_FALSE);
} }
if((buf=malloc(len))==NULL) if((buf=alloca(len))==NULL)
return(JS_TRUE); return(JS_TRUE);
if(fgets(buf,len,p->fp)!=NULL) { if(fgets(buf,len,p->fp)!=NULL) {
...@@ -329,8 +324,6 @@ js_readln(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) ...@@ -329,8 +324,6 @@ js_readln(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
*rval = STRING_TO_JSVAL(js_str); /* _CrtDbgBreak from _heap_alloc_dbg */ *rval = STRING_TO_JSVAL(js_str); /* _CrtDbgBreak from _heap_alloc_dbg */
} }
free(buf);
return(JS_TRUE); return(JS_TRUE);
} }
...@@ -934,17 +927,15 @@ js_write(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) ...@@ -934,17 +927,15 @@ js_write(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
len = JS_GetStringLength(str); len = JS_GetStringLength(str);
if((p->uuencoded || p->b64encoded || p->yencoded) if((p->uuencoded || p->b64encoded || p->yencoded)
&& len && (uubuf=malloc(len))!=NULL) { && len && (uubuf=alloca(len))!=NULL) {
if(p->uuencoded) if(p->uuencoded)
len=uudecode(uubuf,len,cp,len); len=uudecode(uubuf,len,cp,len);
else if(p->yencoded) else if(p->yencoded)
len=ydecode(uubuf,len,cp,len); len=ydecode(uubuf,len,cp,len);
else else
len=b64_decode(uubuf,len,cp,len); len=b64_decode(uubuf,len,cp,len);
if(len<0) { if(len<0)
free(uubuf);
return(JS_TRUE); return(JS_TRUE);
}
cp=uubuf; cp=uubuf;
} }
...@@ -962,22 +953,18 @@ js_write(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) ...@@ -962,22 +953,18 @@ js_write(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
if(fwrite(cp,1,len,p->fp)==(size_t)len) { if(fwrite(cp,1,len,p->fp)==(size_t)len) {
if(tlen>len) { if(tlen>len) {
len=tlen-len; len=tlen-len;
if((cp=malloc(len))==NULL) { if((cp=alloca(len))==NULL) {
dbprintf(TRUE, p, "malloc failure of %u bytes", len); dbprintf(TRUE, p, "alloca failure of %u bytes", len);
return(JS_TRUE); return(JS_TRUE);
} }
memset(cp,p->etx,len); memset(cp,p->etx,len);
fwrite(cp,1,len,p->fp); fwrite(cp,1,len,p->fp);
free(cp);
} }
dbprintf(FALSE, p, "wrote %u bytes",tlen); dbprintf(FALSE, p, "wrote %u bytes",tlen);
*rval = JSVAL_TRUE; *rval = JSVAL_TRUE;
} else } else
dbprintf(TRUE, p, "write of %u bytes failed",len); dbprintf(TRUE, p, "write of %u bytes failed",len);
if(uubuf!=NULL)
free(uubuf);
return(JS_TRUE); return(JS_TRUE);
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment