p=source;
while (length-- && (*p != '\0'))
*destination++=(*p++);
- *destination='\0';
- return((size_t) (p-source));
+ if (length != 0)
+ *destination='\0';
+ return((size_t) (p-source-1));
}
static char *NextXPMLine(char *p)
{
p=next;
next=NextXPMLine(p);
- (void) CopyXPMColor(key,p,MagickMin((size_t) width,MaxTextExtent));
+ (void) CopyXPMColor(key,p,MagickMin((size_t) width,MaxTextExtent-1));
status=AddValueToSplayTree(xpm_colors,ConstantString(key),(void *) j);
/*
Parse color.
break;
if (next != (char *) NULL)
(void) CopyXPMColor(target,q,MagickMin((size_t) (next-q),
- MaxTextExtent));
+ MaxTextExtent-1));
else
(void) CopyMagickString(target,q,MaxTextExtent);
q=ParseXPMColor(target,MagickFalse);
break;
for (x=0; x < (ssize_t) image->columns; x++)
{
- p+=CopyXPMColor(key,p,MagickMin(width,MaxTextExtent));
+ p+=CopyXPMColor(key,p,MagickMin(width,MaxTextExtent-1));
j=(ssize_t) GetValueFromSplayTree(xpm_colors,key);
if (image->storage_class == PseudoClass)
SetPixelIndex(image,(Quantum) j,r);