Skip to content

coverity Scan the Code Results #1067

Description

@ilikui
34static unsigned char *print(const cJSON * const item, cJSON_bool format, const internal_hooks * const hooks)
1235{
1236    static const size_t default_buffer_size = 256;
1237    printbuffer buffer[1];
      	assignment: 赋值printed = NULL1238    unsigned char *printed = NULL;
1239
1240    memset(buffer, 0, sizeof(buffer));
1241
1242    /* create buffer */
1243    buffer->buffer = (unsigned char*) hooks->allocate(default_buffer_size);
1244    buffer->length = default_buffer_size;
1245    buffer->format = format;
1246    buffer->hooks = *hooks;
1247    if (buffer->buffer == NULL)
1248    {
1249        goto fail;
1250    }
1251
1252    /* print the value */
1253    if (!print_value(item, buffer))
1254    {
1255        goto fail;
1256    }
1257    update_offset(buffer);
1258
1259    /* check if reallocate is available */
1260    if (hooks->reallocate != NULL)
1261    {
1262        printed = (unsigned char*) hooks->reallocate(buffer->buffer, buffer->offset + 1);
1263        if (printed == NULL) {
1264            goto fail;
1265        }
1266        buffer->buffer = NULL;
1267    }
1268    else /* otherwise copy the JSON over to a new buffer */
1269    {
1270        printed = (unsigned char*) hooks->allocate(buffer->offset + 1);
1271        if (printed == NULL)
1272        {
1273            goto fail;
1274        }
1275        memcpy(printed, buffer->buffer, cjson_min(buffer->length, buffer->offset + 1));
1276        printed[buffer->offset] = '\0'; /* just to be sure */
1277
1278        /* free the buffer */
1279        hooks->deallocate(buffer->buffer);
1280        buffer->buffer = NULL;
1281    }
1282
1283    return printed;
1284
1285fail:
1286    if (buffer->buffer != NULL)
1287    {
1288        hooks->deallocate(buffer->buffer);
1289        buffer->buffer = NULL;
1290    }
1291
      	null: 在条件 printed != NULL printed 的值必须为 NULLdead_error_condition: 条件 printed != NULL 不可能为 true1292    if (printed != NULL)
1293    {
      	
CID 5543771: (#1 of 1): 逻辑死代码 (DEADCODE)
dead_error_begin: 执行无法到达此语句hooks->deallocate(printed);。
1294        hooks->deallocate(printed);
1295        printed = NULL;
1296    }
1297
1298    return NULL;
1299}

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions