|  | @@ -220,21 +220,40 @@ typedef struct
 | 
											
												
													
														|  |      int offset;
 |  |      int offset;
 | 
											
												
													
														|  |  } printbuffer;
 |  |  } printbuffer;
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | -static char* ensure(printbuffer *p,int needed)
 |  | 
 | 
											
												
													
														|  | 
 |  | +/* realloc printbuffer if necessary to have at least "needed" bytes more */
 | 
											
												
													
														|  | 
 |  | +static char* ensure(printbuffer *p, int needed)
 | 
											
												
													
														|  |  {
 |  |  {
 | 
											
												
													
														|  | -	char *newbuffer;int newsize;
 |  | 
 | 
											
												
													
														|  | -	if (!p || !p->buffer) return 0;
 |  | 
 | 
											
												
													
														|  | -	needed+=p->offset;
 |  | 
 | 
											
												
													
														|  | -	if (needed<=p->length) return p->buffer+p->offset;
 |  | 
 | 
											
												
													
														|  | -
 |  | 
 | 
											
												
													
														|  | -	newsize=pow2gt(needed);
 |  | 
 | 
											
												
													
														|  | -	newbuffer=(char*)cJSON_malloc(newsize);
 |  | 
 | 
											
												
													
														|  | -	if (!newbuffer) {cJSON_free(p->buffer);p->length=0,p->buffer=0;return 0;}
 |  | 
 | 
											
												
													
														|  | -	if (newbuffer) memcpy(newbuffer,p->buffer,p->length);
 |  | 
 | 
											
												
													
														|  | -	cJSON_free(p->buffer);
 |  | 
 | 
											
												
													
														|  | -	p->length=newsize;
 |  | 
 | 
											
												
													
														|  | -	p->buffer=newbuffer;
 |  | 
 | 
											
												
													
														|  | -	return newbuffer+p->offset;
 |  | 
 | 
											
												
													
														|  | 
 |  | +    char *newbuffer;
 | 
											
												
													
														|  | 
 |  | +    int newsize;
 | 
											
												
													
														|  | 
 |  | +    if (!p || !p->buffer)
 | 
											
												
													
														|  | 
 |  | +    {
 | 
											
												
													
														|  | 
 |  | +        return 0;
 | 
											
												
													
														|  | 
 |  | +    }
 | 
											
												
													
														|  | 
 |  | +    needed += p->offset;
 | 
											
												
													
														|  | 
 |  | +    if (needed <= p->length)
 | 
											
												
													
														|  | 
 |  | +    {
 | 
											
												
													
														|  | 
 |  | +        return p->buffer + p->offset;
 | 
											
												
													
														|  | 
 |  | +    }
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +    newsize = pow2gt(needed);
 | 
											
												
													
														|  | 
 |  | +    newbuffer = (char*)cJSON_malloc(newsize);
 | 
											
												
													
														|  | 
 |  | +    if (!newbuffer)
 | 
											
												
													
														|  | 
 |  | +    {
 | 
											
												
													
														|  | 
 |  | +        cJSON_free(p->buffer);
 | 
											
												
													
														|  | 
 |  | +        p->length = 0;
 | 
											
												
													
														|  | 
 |  | +        p->buffer = 0;
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +        return 0;
 | 
											
												
													
														|  | 
 |  | +    }
 | 
											
												
													
														|  | 
 |  | +    if (newbuffer)
 | 
											
												
													
														|  | 
 |  | +    {
 | 
											
												
													
														|  | 
 |  | +        memcpy(newbuffer, p->buffer, p->length);
 | 
											
												
													
														|  | 
 |  | +    }
 | 
											
												
													
														|  | 
 |  | +    cJSON_free(p->buffer);
 | 
											
												
													
														|  | 
 |  | +    p->length = newsize;
 | 
											
												
													
														|  | 
 |  | +    p->buffer = newbuffer;
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +    return newbuffer + p->offset;
 | 
											
												
													
														|  |  }
 |  |  }
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |  static int update(printbuffer *p)
 |  |  static int update(printbuffer *p)
 |