use another char * instead of using const char *text directly

This commit is contained in:
speedie 2023-05-10 18:56:56 +02:00
parent 02cba1d0f0
commit 6dc84051aa

View file

@ -318,6 +318,7 @@ int drw_text(Drw *drw, int x, int y, unsigned int w, unsigned int h, unsigned in
XftDraw *d = NULL; XftDraw *d = NULL;
size_t i, len; size_t i, len;
int render = x || y || w || h; int render = x || y || w || h;
char *t;
if (!drw || (render && !drw->scheme) || !text || !drw->font) if (!drw || (render && !drw->scheme) || !text || !drw->font)
return 0; return 0;
@ -333,18 +334,19 @@ int drw_text(Drw *drw, int x, int y, unsigned int w, unsigned int h, unsigned in
} }
len = strlen(text); len = strlen(text);
t = strdup(text);
if (len) { if (len) {
drw_font_getexts(drw->font, text, len, &ew, NULL, markup); drw_font_getexts(drw->font, t, len, &ew, NULL, markup);
/* shorten text if necessary */ /* shorten text if necessary */
for (len = MIN(len, sizeof(buf) - 1); len && ew > w; drw_font_getexts(drw->font, text, len, &ew, NULL, markup)) for (len = MIN(len, sizeof(buf) - 1); len && ew > w; drw_font_getexts(drw->font, t, len, &ew, NULL, markup))
len--; len--;
if (len) { if (len) {
memcpy(buf, text, len); memcpy(buf, t, len);
buf[len] = '\0'; buf[len] = '\0';
if (len < strlen(text)) if (len < strlen(t))
for (i = len; i && i > len - 3; buf[--i] = '.') for (i = len; i && i > len - 3; buf[--i] = '.')
; /* NOP */ ; /* NOP */