+ } else if ((oldlen = strlen(oldmsg)) > limit) {
+ // limit total length by dropping old contents
+ char *truncmsg = oldmsg + oldlen - limit;
+ // advance past partial UTF-8 bytes
+ while (isUTF8Continuation(*truncmsg)) truncmsg++;
+ asprintf(&newmsg, "... %s\n%s", truncmsg, message);