rem: break;
add: return NULL;
context: parse_texture(WScreen *scr, proplist_t pl){    proplist_t elem;    char *val;    int nelem;    WTexture *texture=NULL;        nelem = PLGetNumberOfElements(pl);    if (nelem < 1)      return NULL;            elem = PLGetArrayElement(pl, 0);    if (!elem || !PLIsString(elem))      return NULL;    val = PLGetString(elem);        if (strcasecmp(val, "solid")==0) {	XColor color;	if (nelem != 2)	    return NULL;	/* get color */		elem = PLGetArrayElement(pl, 1);	if (!elem || !PLIsString(elem)) 	  return NULL;	val = PLGetString(elem);	if (!XParseColor(dpy, scr->colormap, val, &color)) {	    wwarning(_("\"%s\" is not a valid color name"), val);	    return NULL;	}		texture = (WTexture*)wTextureMakeSolid(scr, &color);    } else if (strcasecmp(val, "dgradient")==0	       || strcasecmp(val, "vgradient")==0	       || strcasecmp(val, "hgradient")==0) {	XColor color1, color2;	int type;	if (nelem != 3) {	    wwarning(_("bad number of arguments in gradient specification"));	    return NULL;	}	if (val[0]=='d' || val[0]=='D')	  type = WTEX_DGRADIENT;	else if (val[0]=='h' || val[0]=='H')	  type = WTEX_HGRADIENT;	else	  type = WTEX_VGRADIENT;		/* get from color */	elem = PLGetArrayElement(pl, 1);	if (!elem || !PLIsString(elem)) 	  return NULL;	val = PLGetString(elem);	if (!XParseColor(dpy, scr->colormap, val, &color1)) {	    wwarning(_("\"%s\" is not a valid color name"), val);	    return NULL;	}		/* get to color */	elem = PLGetArrayElement(pl, 2);	if (!elem || !PLIsString(elem)) {	    return NULL;	}	val = PLGetString(elem);	if (!XParseColor(dpy, scr->colormap, val, &color2)) {	    wwarning(_("\"%s\" is not a valid color name"), val);	    return NULL;	}		texture = (WTexture*)wTextureMakeGradient(scr, type, &color1, &color2);	    } else if (strcasecmp(val, "mhgradient")==0	       || strcasecmp(val, "mvgradient")==0	       || strcasecmp(val, "mdgradient")==0) {	XColor color;	RColor **colors;	int i, count;	int type;		if (nelem < 3) {	    wwarning(_("too few arguments in multicolor gradient specification"));	    return NULL;	}	if (val[1]=='h' || val[1]=='H')	    type = WTEX_MHGRADIENT;	else if (val[1]=='v' || val[1]=='V')	    type = WTEX_MVGRADIENT;	else	    type = WTEX_MDGRADIENT;	count = nelem-1;		colors = wmalloc(sizeof(RColor*)*(count+1));		for (i=0; i<count; i++) {	    elem = PLGetArrayElement(pl, i+1);	    if (!elem || !PLIsString(elem)) {		for ( ; i>=0; --i) {		    free(colors[i]);		}		free(colors);		break;	    }	    val = PLGetString(elem);	    if (!XParseColor(dpy, scr->colormap, val, &color)) {		wwarning(_("\"%s\" is not a valid color name"), val);		for ( ; i>=0; --i) {		    free(colors[i]);		}		free(colors);			break;	    } else {		colors[i] = wmalloc(sizeof(RColor));		colors[i]->red = color.red >> 8;		colors[i]->green = color.green >> 8;		colors[i]->blue = color.blue >> 8;	    }	}	colors[i] = NULL;		texture = (WTexture*)wTextureMakeMGradient(scr, type, colors);    } else if (strcasecmp(val, "spixmap")==0 ||	       strcasecmp(val, "cpixmap")==0 ||               strcasecmp(val, "tpixmap")==0) {	XColor color;        int type;	if (nelem != 3) 	    return NULL;        if (val[0] == 's' || val[0] == 'S')            type = WTP_SCALE;        else if (val[0] == 'c' || val[0] == 'C')	    type = WTP_CENTER;	else            type = WTP_TILE;	/* get color */	elem = PLGetArrayElement(pl, 2);	if (!elem || !PLIsString(elem)) {	    return NULL;	}	val = PLGetString(elem);	if (!XParseColor(dpy, scr->colormap, val, &color)) {	    wwarning(_("\"%s\" is not a valid color name"), val);	    return NULL;	}		/* file name */	elem = PLGetArrayElement(pl, 1);	if (!elem || !PLIsString(elem)) 	  return NULL;	val = PLGetString(elem);	texture = (WTexture*)wTextureMakePixmap(scr, type, val, &color);    } else {	return NULL;    }    return texture;}