3333#include <stdlib.h>
3434#include <string.h>
3535#include <stdio.h>
36+ #include <assert.h>
3637#include "jVar.h"
3738
3839
@@ -41,6 +42,7 @@ void jVar_chkMem(jVar *val, size_t len) {
4142 if (val -> memSize < 256 ) val -> memSize = 256 ;
4243 while (val -> memSize < len ) val -> memSize <<= 1 ;
4344 val -> vBuf = val -> vBuf ? realloc (val -> vBuf , val -> memSize ) : malloc (val -> memSize );
45+ assert (val -> vBuf );
4446 }
4547}
4648
@@ -98,6 +100,7 @@ jVar *jVar_detach(jVar *val) {
98100 case JVAR_STRING :
99101 case JVAR_JSON : {
100102 jVar * res = malloc (sizeof (jVar ));
103+ if (!res ) return NULL ;
101104 memcpy (res , val , sizeof (jVar ));
102105 val -> vBuf = NULL ;
103106 val -> len = 0 ;
@@ -220,6 +223,7 @@ char *jVar_getString(jVar *val) {
220223 int len = jVar_cpString (val , NULL , -1 );
221224 if (len < 0 ) return NULL ;
222225 char * str = malloc (len + 1 );
226+ if (!str ) return NULL ;
223227 str [jVar_cpString (val , str , len )] = 0 ;
224228 return str ;
225229}
@@ -325,40 +329,45 @@ void jVar_setString0(jVar *val, char *str) {
325329
326330jVar * jVar_null () {
327331 jVar * val = malloc (offsetof(jVar ,vInt ));
328- val -> type = JVAR_NULL ;
332+ if ( val ) val -> type = JVAR_NULL ;
329333 return val ;
330334}
331335
332336jVar * jVar_bool (jVar_TBool v ) {
333337 jVar * val = malloc (offsetof(jVar ,vBool ) + sizeof (val -> vBool ));
338+ if (!val ) return NULL ;
334339 val -> type = JVAR_BOOL ;
335340 val -> vBool = v != 0 ;
336341 return val ;
337342}
338343
339344jVar * jVar_int (jVar_TInt v ) {
340345 jVar * val = malloc (offsetof(jVar ,vInt ) + sizeof (val -> vInt ));
346+ if (!val ) return NULL ;
341347 val -> type = JVAR_INT ;
342348 val -> vInt = v ;
343349 return val ;
344350}
345351
346352jVar * jVar_float (jVar_TFloat v ) {
347353 jVar * val = malloc (offsetof(jVar ,vFloat ) + sizeof (val -> vFloat ));
354+ if (!val ) return NULL ;
348355 val -> type = JVAR_FLOAT ;
349356 val -> vFloat = v ;
350357 return val ;
351358}
352359
353360jVar * jVar_stringl (const char * v , size_t len ) {
354361 char * buf = malloc (len + 16 );
362+ if (!buf ) return NULL ;
355363 if (v ) memcpy (buf , v , len );
356364 return jVar_stringl0 (buf , len , 16 );
357365}
358366
359367jVar * jVar_stringl0 (char * v , size_t len , size_t extra ) {
360368 if (!v ) return NULL ;
361369 jVar * val = malloc (sizeof (jVar ));
370+ if (!val ) return NULL ;
362371 val -> type = JVAR_STRING ;
363372 val -> len = len ;
364373 val -> vString = v ;
@@ -378,6 +387,7 @@ jVar *jVar_string0(char *v) {
378387
379388jVar * jVar_JSON (const char * json ) {
380389 jVar * val = jVar_string (json );
390+ if (!val ) return NULL ;
381391 val -> type = JVAR_JSON ;
382392 jVar_chkMem (val , val -> len + 1 );
383393 val -> vString [val -> len ] = 0 ;
@@ -386,6 +396,7 @@ jVar *jVar_JSON(const char *json) {
386396
387397jVar * jVar_array () {
388398 jVar * val = malloc (sizeof (jVar ));
399+ if (!val ) return NULL ;
389400 val -> type = JVAR_ARRAY ;
390401 val -> len = 0 ;
391402 val -> memSize = 0 ;
@@ -395,6 +406,7 @@ jVar *jVar_array() {
395406
396407jVar * jVar_object () {
397408 jVar * val = malloc (sizeof (jVar ));
409+ if (!val ) return NULL ;
398410 val -> type = JVAR_OBJECT ;
399411 val -> len = 0 ;
400412 val -> memSize = 0 ;
@@ -530,6 +542,7 @@ char *jVar_toJSON(jVar *val) {
530542
531543jVarParser * jVarParser_new (jVarParser * parent ) {
532544 jVarParser * p = malloc (sizeof (jVarParser ));
545+ if (!p ) return NULL ;
533546 p -> state = JVAR_PARSE_INITIAL ;
534547 p -> result = NULL ;
535548 p -> key = NULL ;
@@ -645,7 +658,6 @@ jVarParser *jVarParser_proceed(jVarParser *p,jVarParser *child) {
645658 const char * h = p -> head ;
646659 const char * t = p -> tail ;
647660 char c ;
648- int expf = 0 ;
649661 if (p -> state == JVAR_PARSE_INITIAL ) p -> state = JVAR_PARSE_INCOMPLETE ;
650662 while (++ h < t ) {
651663 switch (c = * h ) {
0 commit comments