libsheepy

C lib for handling text files, strings and json like data structure with an object oriented system
git clone https://spartatek.se/git/libsheepy.git
Log | Files | Refs | README | LICENSE

commit afb063af263a04a637adaf84fb99a914fef9cba7
parent f36382f5b8ccd91c72f59b9d85149893dfc8f9a7
Author: Remy Noulin <loader2x@gmail.com>
Date:   Mon, 23 Dec 2019 15:58:38 +0100

remove double free in setTopJson functions

release/libsheepy.h            |  2 +-
src/json/libsheepyCSmallJson.c | 34 +++++++++++-----------------------
src/libsheepy.h                |  2 +-
3 files changed, 13 insertions(+), 25 deletions(-)

Diffstat:
Mrelease/libsheepy.h | 2+-
Msrc/json/libsheepyCSmallJson.c | 34+++++++++++-----------------------
Msrc/libsheepy.h | 2+-
3 files changed, 13 insertions(+), 25 deletions(-)

diff --git a/release/libsheepy.h b/release/libsheepy.h @@ -96,7 +96,7 @@ // version accoring to the version package: Release.Major.minor.patch // https://noulin.net/version/file/README.md.html -#define LIBSHEEPY_VERSION "1.1.0" +#define LIBSHEEPY_VERSION "1.1.0.1" #ifndef SH_PREFIX #define SH_PREFIX(NAME) NAME diff --git a/src/json/libsheepyCSmallJson.c b/src/json/libsheepyCSmallJson.c @@ -2981,43 +2981,43 @@ internal smallJsont* setTopSmallJson(smallJsont *self, baset *value) { if (isOType(value, "undefined") && (self->topIsA == SMALLJSON_IS_EMPTY)) { self->topIsA = TOP_IS_UNDEFINED; sFree((smallt *)self->topU); - self->topU = (sUndefinedt *)toSmallt(value);; + self->topU = (sUndefinedt *)toSmallt(value); return(self); } if (isOType(value, "smallBool") && (self->topIsA == SMALLJSON_IS_EMPTY)) { self->topIsA = TOP_IS_BOOL; sFree((smallt *)self->topB); - self->topB = (sBoolt *)toSmallt(value);; + self->topB = (sBoolt *)toSmallt(value); return(self); } if (isOType(value, "smallDouble") && (self->topIsA == SMALLJSON_IS_EMPTY)) { self->topIsA = TOP_IS_DOUBLE; sFree((smallt *)self->topD); - self->topD = (sDoublet *)toSmallt(value);; + self->topD = (sDoublet *)toSmallt(value); return(self); } if (isOType(value, "smallInt") && (self->topIsA == SMALLJSON_IS_EMPTY)) { self->topIsA = TOP_IS_INT; sFree((smallt *)self->topI); - self->topI = (sIntt *)toSmallt(value);; + self->topI = (sIntt *)toSmallt(value); return(self); } if (isOType(value, "smallString") && (self->topIsA == SMALLJSON_IS_EMPTY)) { self->topIsA = TOP_IS_STRING; sFree((smallt *)self->topS); - self->topS = (sStringt *)toSmallt(value);; + self->topS = (sStringt *)toSmallt(value); return(self); } if (isOType(value, "smallDict") && (self->topIsA == SMALLJSON_IS_EMPTY)) { self->topIsA = TOP_IS_DICT; sFree((smallt *)self->top); - self->top = (sDictt *)toSmallt(value);; + self->top = (sDictt *)toSmallt(value); return(self); } if (isOType(value, "smallArray") && (self->topIsA == SMALLJSON_IS_EMPTY)) { self->topIsA = TOP_IS_ARRAY; sFree((smallt *)self->topA); - self->topA = (sArrayt *)toSmallt(value);; + self->topA = (sArrayt *)toSmallt(value); return(self); } if (isOType(value, "smallJson") && (self->topIsA == SMALLJSON_IS_EMPTY)) { @@ -3068,10 +3068,7 @@ internal smallJsont* setTopBoolSmallJson(smallJsont *self, bool value) { smallBoolt *v = allocSmallBool(value); smallJsont *r = setTopNFreeSmallJson(self, (baset*) v);; - if (r) { - finishO(v); - } - else { + if (!r) { terminateO(v); } return(self); @@ -3081,10 +3078,7 @@ internal smallJsont* setTopDoubleSmallJson(smallJsont *self, double value) { smallDoublet *v = allocSmallDouble(value);; smallJsont *r = setTopNFreeSmallJson(self, (baset*) v);; - if (r) { - finishO(v); - } - else { + if (!r) { terminateO(v); } return(self); @@ -3094,10 +3088,7 @@ internal smallJsont* setTopIntSmallJson(smallJsont *self, int64_t value) { smallIntt *v = allocSmallInt(value);; smallJsont *r = setTopNFreeSmallJson(self, (baset*) v);; - if (r) { - finishO(v); - } - else { + if (!r) { terminateO(v); } return(self); @@ -3110,10 +3101,7 @@ internal smallJsont* setTopStringSmallJson(smallJsont *self, const char *value) } smallStringt *v = allocSmallString(value);; smallJsont *r = setTopNFreeSmallJson(self, (baset*) v);; - if (r) { - finishO(v); - } - else { + if (!r) { terminateO(v); } return(self); diff --git a/src/libsheepy.h b/src/libsheepy.h @@ -96,7 +96,7 @@ // version accoring to the version package: Release.Major.minor.patch // https://noulin.net/version/file/README.md.html -#define LIBSHEEPY_VERSION "1.1.0" +#define LIBSHEEPY_VERSION "1.1.0.1" #ifndef SH_PREFIX #define SH_PREFIX(NAME) NAME