| 
					
				 | 
			
			
				@@ -148,7 +148,6 @@ void create_objects(void) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     cJSON *img = NULL; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     cJSON *thm = NULL; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     cJSON *fld = NULL; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    char *out = NULL; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     int i = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     /* Our "days of the week" array: */ 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -210,21 +209,20 @@ void create_objects(void) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     cJSON_AddNumberToObject(fmt, "frame rate", 24); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     /* Print to text */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    out = cJSON_Print(root); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    /* Delete the cJSON */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    if (print_preallocated(root) != 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        cJSON_Delete(root); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        exit(EXIT_FAILURE); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     cJSON_Delete(root); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    /* print it */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    printf("%s\n",out); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    /* release the string */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    free(out); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     /* Our "days of the week" array: */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     root = cJSON_CreateStringArray(strings, 7); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    out = cJSON_Print(root); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    if (print_preallocated(root) != 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        cJSON_Delete(root); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        exit(EXIT_FAILURE); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     cJSON_Delete(root); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    printf("%s\n", out); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    free(out); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     /* Our matrix: */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     root = cJSON_CreateArray(); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -235,11 +233,11 @@ void create_objects(void) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     /* cJSON_ReplaceItemInArray(root, 1, cJSON_CreateString("Replacement")); */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    out = cJSON_Print(root); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    if (print_preallocated(root) != 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        cJSON_Delete(root); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        exit(EXIT_FAILURE); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     cJSON_Delete(root); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    printf("%s\n", out); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    free(out); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     /* Our "gallery" item: */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     root = cJSON_CreateObject(); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -253,13 +251,13 @@ void create_objects(void) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     cJSON_AddStringToObject(thm, "Width", "100"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     cJSON_AddItemToObject(img, "IDs", cJSON_CreateIntArray(ids, 4)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    out = cJSON_Print(root); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    if (print_preallocated(root) != 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        cJSON_Delete(root); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        exit(EXIT_FAILURE); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     cJSON_Delete(root); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    printf("%s\n", out); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    free(out); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     /* Our array of "records": */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     root = cJSON_CreateArray(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     for (i = 0; i < 2; i++) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -276,61 +274,20 @@ void create_objects(void) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     /* cJSON_ReplaceItemInObject(cJSON_GetArrayItem(root, 1), "City", cJSON_CreateIntArray(ids, 4)); */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    out = cJSON_Print(root); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    printf("%s\n", out); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    printf("Test cJSON_PrintPreallocated:\n"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    /* create buffer */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    size_t len = strlen(out) + 1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    char *buf = malloc(len); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    /* create buffer to fail */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    size_t len_fail = strlen(out); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    char *buf_fail = malloc(len_fail); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    free(out); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    /* Print to buffer */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    if (cJSON_PrintPreallocated(root, buf, len, 1) != 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        printf("cJSON_PrintPreallocated failed (but it should not have!)\n"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        free(buf_fail); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        free(buf); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        exit(EXIT_FAILURE); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        printf("cJSON_PrintPreallocated:\n%s\n", buf); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    /* unformatted output */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    if (cJSON_PrintPreallocated(root, buf, len, 0) != 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        printf("cJSON_PrintPreallocated failed (but it should not have!)\n"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        free(buf_fail); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        free(buf); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    if (print_preallocated(root) != 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        cJSON_Delete(root); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         exit(EXIT_FAILURE); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        printf("cJSON_PrintPreallocated (unformatted):\n%s\n", buf); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    free(buf); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    /* force it to fail */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    if (cJSON_PrintPreallocated(root, buf_fail, len_fail, 1) != 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        printf("cJSON_PrintPreallocated failed (as expected)\n"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        printf("cJSON_PrintPreallocated worked (but it should have failed!)\n"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        printf("cJSON_PrintPreallocated:\n%s\n", buf_fail); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    free(buf_fail); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     cJSON_Delete(root); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     root = cJSON_CreateObject(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     cJSON_AddNumberToObject(root, "number", 1.0 / zero); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    out = cJSON_Print(root); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    printf("%s\n", out); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    cJSON_Delete(root); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    free(out); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    if (print_preallocated(root) != 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        cJSON_Delete(root); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        exit(EXIT_FAILURE); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    cJSON_Delete(root); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 int main(void) 
			 |