[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH V2 1/9] libxl_json: Use libxl alloc function with NOGC.
This patch makes use of the libxl allocation API and removes the check for allocation failure. Also we don't use GC with a json_object because this structure use flexarray and the latter does not use the gc. Signed-off-by: Anthony PERARD <anthony.perard@xxxxxxxxxx> --- tools/libxl/libxl_json.c | 37 +++++++++++-------------------------- 1 file changed, 11 insertions(+), 26 deletions(-) diff --git a/tools/libxl/libxl_json.c b/tools/libxl/libxl_json.c index caa8312..9c3dca2 100644 --- a/tools/libxl/libxl_json.c +++ b/tools/libxl/libxl_json.c @@ -210,12 +210,7 @@ static libxl__json_object *json_object_alloc(libxl__gc *gc, { libxl__json_object *obj; - obj = calloc(1, sizeof (libxl__json_object)); - if (obj == NULL) { - LIBXL__LOG_ERRNO(libxl__gc_owner(gc), LIBXL__LOG_ERROR, - "Failed to allocate a libxl__json_object"); - return NULL; - } + obj = libxl__zalloc(NOGC, sizeof(*obj)); obj->type = type; @@ -393,8 +388,7 @@ static int json_callback_null(void *opaque) DEBUG_GEN(ctx, null); - if ((obj = json_object_alloc(ctx->gc, JSON_NULL)) == NULL) - return 0; + obj = json_object_alloc(ctx->gc, JSON_NULL); if (json_object_append_to(ctx->gc, obj, ctx->current) == -1) { libxl__json_object_free(ctx->gc, obj); @@ -411,9 +405,8 @@ static int json_callback_boolean(void *opaque, int boolean) DEBUG_GEN_VALUE(ctx, bool, boolean); - if ((obj = json_object_alloc(ctx->gc, - boolean ? JSON_TRUE : JSON_FALSE)) == NULL) - return 0; + obj = json_object_alloc(ctx->gc, + boolean ? JSON_TRUE : JSON_FALSE); if (json_object_append_to(ctx->gc, obj, ctx->current) == -1) { libxl__json_object_free(ctx->gc, obj); @@ -448,8 +441,7 @@ static int json_callback_number(void *opaque, const char *s, libxl_yajl_length l goto error; } - if ((obj = json_object_alloc(ctx->gc, JSON_DOUBLE)) == NULL) - return 0; + obj = json_object_alloc(ctx->gc, JSON_DOUBLE); obj->u.d = d; } else { long long i = strtoll(s, NULL, 10); @@ -458,16 +450,14 @@ static int json_callback_number(void *opaque, const char *s, libxl_yajl_length l goto error; } - if ((obj = json_object_alloc(ctx->gc, JSON_INTEGER)) == NULL) - return 0; + obj = json_object_alloc(ctx->gc, JSON_INTEGER); obj->u.i = i; } goto out; error: /* If the conversion fail, we just store the original string. */ - if ((obj = json_object_alloc(ctx->gc, JSON_NUMBER)) == NULL) - return 0; + obj = json_object_alloc(ctx->gc, JSON_NUMBER); t = malloc(len + 1); if (t == NULL) { @@ -508,10 +498,7 @@ static int json_callback_string(void *opaque, const unsigned char *str, strncpy(t, (const char *) str, len); t[len] = 0; - if ((obj = json_object_alloc(ctx->gc, JSON_STRING)) == NULL) { - free(t); - return 0; - } + obj = json_object_alloc(ctx->gc, JSON_STRING); obj->u.string = t; if (json_object_append_to(ctx->gc, obj, ctx->current) == -1) { @@ -573,8 +560,7 @@ static int json_callback_start_map(void *opaque) DEBUG_GEN(ctx, map_open); - if ((obj = json_object_alloc(ctx->gc, JSON_MAP)) == NULL) - return 0; + obj = json_object_alloc(ctx->gc, JSON_MAP); if (ctx->current) { if (json_object_append_to(ctx->gc, obj, ctx->current) == -1) { @@ -615,8 +601,7 @@ static int json_callback_start_array(void *opaque) DEBUG_GEN(ctx, array_open); - if ((obj = json_object_alloc(ctx->gc, JSON_ARRAY)) == NULL) - return 0; + obj = json_object_alloc(ctx->gc, JSON_ARRAY); if (ctx->current) { if (json_object_append_to(ctx->gc, obj, ctx->current) == -1) { @@ -681,7 +666,7 @@ libxl__json_object *libxl__json_parse(libxl__gc *gc, const char *s) unsigned char *str = NULL; memset(&yajl_ctx, 0, sizeof (yajl_ctx)); - yajl_ctx.gc = gc; + yajl_ctx.gc = NOGC; DEBUG_GEN_ALLOC(&yajl_ctx); -- Anthony PERARD _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |