|  | @@ -1055,17 +1055,28 @@ static unsigned char *print(const cJSON * const item, cJSON_bool format, const i
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |      update_offset(buffer);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    /* copy the buffer over to a new one */
 | 
	
		
			
				|  |  | -    printed = (unsigned char*) hooks->allocate(buffer->offset + 1);
 | 
	
		
			
				|  |  | -    if (printed == NULL)
 | 
	
		
			
				|  |  | +    /* check if reallocate is available */
 | 
	
		
			
				|  |  | +    if (hooks->reallocate != NULL)
 | 
	
		
			
				|  |  |      {
 | 
	
		
			
				|  |  | -        goto fail;
 | 
	
		
			
				|  |  | +        printed = (unsigned char*) hooks->reallocate(buffer->buffer, buffer->length);
 | 
	
		
			
				|  |  | +        buffer->buffer = NULL;
 | 
	
		
			
				|  |  | +        if (printed == NULL) {
 | 
	
		
			
				|  |  | +            goto fail;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  | -    strncpy((char*)printed, (char*)buffer->buffer, min(buffer->length, buffer->offset + 1));
 | 
	
		
			
				|  |  | -    printed[buffer->offset] = '\0'; /* just to be sure */
 | 
	
		
			
				|  |  | +    else /* otherwise copy the JSON over to a new buffer */
 | 
	
		
			
				|  |  | +    {
 | 
	
		
			
				|  |  | +        printed = (unsigned char*) hooks->allocate(buffer->offset + 1);
 | 
	
		
			
				|  |  | +        if (printed == NULL)
 | 
	
		
			
				|  |  | +        {
 | 
	
		
			
				|  |  | +            goto fail;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        memcpy(printed, buffer->buffer, min(buffer->length, buffer->offset + 1));
 | 
	
		
			
				|  |  | +        printed[buffer->offset] = '\0'; /* just to be sure */
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    /* free the buffer */
 | 
	
		
			
				|  |  | -    hooks->deallocate(buffer->buffer);
 | 
	
		
			
				|  |  | +        /* free the buffer */
 | 
	
		
			
				|  |  | +        hooks->deallocate(buffer->buffer);
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      return printed;
 | 
	
		
			
				|  |  |  
 |