into a string which is usually a read-only string literal. Instead,
copy each segment into writable memory as we need it, and free it
afterwards.
[originally from svn r9558]
[r9495 ==
d0ff371b144d4bfe3cbfb062388347c08e431393]
p = i->sval;
c = *p++;
while (*p) {
- char cc, *q;
+ char *q, *copy;
q = p;
while (*p && *p != c) p++;
- cc = *p;
- *p = '\0';
- [pb addItemWithTitle:[NSString stringWithUTF8String:q]];
- *p = cc;
+ copy = snewn((p-q) + 1, char);
+ memcpy(copy, q, p-q);
+ copy[p-q] = '\0';
+ [pb addItemWithTitle:[NSString stringWithUTF8String:copy]];
+ sfree(copy);
if (*p) p++;
}