From 48e9767a206420294147f802a8a2cc5c9e77141c Mon Sep 17 00:00:00 2001 From: Simon Tatham Date: Wed, 6 Jun 2012 17:59:37 +0000 Subject: [PATCH] Fix a bug introduced by r9495 in which we try to write temporary NULs 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] --- osx.m | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/osx.m b/osx.m index b59999d..6e709a5 100644 --- a/osx.m +++ b/osx.m @@ -1088,15 +1088,16 @@ struct frontend { 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++; }