rem: sprintf(RErrorString, "out of memory");
add: RErrorCode = RERR_NOMEMORY;
context: RBlurImage(RImage *image){    register int x, y;    register int w, tmp;    unsigned char *r, *g, *b, *a;    unsigned char *pr=NULL, *pg=NULL, *pb=NULL, *pa=NULL;#define MASK(c,pc,p)   ((*c + *(c-1) + *(c+1) + pc[p] + pc[p-1] + pc[p+1] \			+ *(c+w) + *(c+w-1) + *(c+w+1))/9)        pr = (unsigned char*)alloca(image->width*sizeof(char));    if (!pr)      goto outofmem;    pg = (unsigned char*)alloca(image->width*sizeof(char));    if (!pg)      goto outofmem;    pb = (unsigned char*)alloca(image->width*sizeof(char));    if (!pb)      goto outofmem;    pa = (unsigned char*)alloca(image->width*sizeof(char));    if (!pa)      goto outofmem;        r = image->data[0];    g = image->data[1];    b = image->data[2];    a = image->data[3];        for (x=0; x<image->width; x++) {	pr[x] = *(r++);	pg[x] = *(g++);	pb[x] = *(b++);    }    w = image->width;        for (y=1; y<image->height-1; y++) {	pr[w-1] = r[w-1];	pg[w-1] = g[w-1];	pb[w-1] = b[w-1];	pr[0] = *(r++);	pg[0] = *(g++);	pb[0] = *(b++);		for (x=1; x<image->width-1; x++) {	    tmp = *r;	    *(r++) = MASK(r,pr,x);	    pr[x] = tmp;	    	    tmp = *g;	    *(g++) = MASK(g,pg,x);	    pg[x] = tmp;	    	    tmp = *b;	    *(b++) = MASK(b,pb,x);	    pb[x] = tmp;	}	r++;	g++;	b++;    }#undef MASK    #ifdef C_ALLOCA    alloca(0);#endif    return True;        outofmem:    sprintf(RErrorString, "out of memory");#ifdef C_ALLOCA    alloca(0);#endif    return False;}