rem: ptr = text;
add: ptr2 = ptr = text;
context: showText(Balloon *bPtr, int x, int y, int h, int w, char *text){    WMScreen *scr = bPtr->view->screen;    Display *dpy = WMScreenDisplay(scr);    int width;    int height;    Pixmap pixmap;    Pixmap mask;    WMFont *font = bPtr->font ? bPtr->font : scr->normalFont;    int textHeight;    int side = 0;    int ty;    int bx, by;    {	int w;	char *ptr, *ptr2;		ptr = text;	width = 0;	while (ptr && ptr2) {	    ptr2 = strchr(ptr, '\n');	    if (ptr2) {		w = WMWidthOfString(font, ptr, ptr2 - ptr);	    } else {		w = WMWidthOfString(font, ptr, strlen(ptr));	    }	    if (w > width)		width = w;	    ptr = ptr2 + 1;	}    }        width += 16;    textHeight = W_GetTextHeight(font, text, width, False);        height = textHeight + 4;        if (height < 16)	height = 16;    if (width < height)	width = height;    if (x + width > scr->rootView->size.width) {	side = RIGHT;	bx = x - width + w/2;	if (bx < 0)	    bx = 0;    } else {	side = LEFT;	bx = x + w/2;    }    if (bx + width > scr->rootView->size.width)	bx = scr->rootView->size.width - width;    if (y - (height + SPACE) < 0) {	side |= TOP;	by = y+h-1;	ty = SPACE;    } else {	side |= BOTTOM;	by = y - (height + SPACE);	ty = 0;    }    pixmap = makePixmap(scr, width, height, side, &mask);    W_PaintText(bPtr->view, pixmap, font, 8, ty + (height - textHeight)/2,		width, bPtr->flags.alignment,		WMColorGC(bPtr->textColor ? bPtr->textColor : scr->black),		False, text, strlen(text));    XSetWindowBackgroundPixmap(dpy, bPtr->view->window, pixmap);    W_ResizeView(bPtr->view, width, height+SPACE);    XFreePixmap(dpy, pixmap);    XShapeCombineMask(dpy, bPtr->view->window, ShapeBounding, 0, 0, mask,		      ShapeSet);    XFreePixmap(dpy, mask);    W_MoveView(bPtr->view, bx, by);    W_MapView(bPtr->view);}