aboutsummaryrefslogtreecommitdiff
path: root/libobjc
diff options
context:
space:
mode:
authorRichard Frith-Macdonald <rfm@gnu.org>2011-02-28 13:08:37 +0000
committerNicola Pero <nicola@gcc.gnu.org>2011-02-28 13:08:37 +0000
commit55b21c7a644d052ae243adef866d1394fc85a9f1 (patch)
tree9b5dfa811dd66d83194bea91dd5b2d2150826f29 /libobjc
parent544a301ed4033323b9512fb71ed8c83506c1f0af (diff)
Fixed critical typo in Objective-C runtime garbage collection code
From-SVN: r170561
Diffstat (limited to 'libobjc')
-rw-r--r--libobjc/ChangeLog6
-rw-r--r--libobjc/gc.c10
2 files changed, 13 insertions, 3 deletions
diff --git a/libobjc/ChangeLog b/libobjc/ChangeLog
index 3d85c982041..a9399e6bea9 100644
--- a/libobjc/ChangeLog
+++ b/libobjc/ChangeLog
@@ -1,3 +1,9 @@
+2011-02-28 Richard Frith-Macdonald <rfm@gnu.org>
+
+ PR libobjc/47922
+ * gc.c (class_ivar_set_gcinvisible): Use _C_GCINVISIBLE instead of
+ a hardcoded "!".
+
2011-02-13 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
* configure: Regenerate.
diff --git a/libobjc/gc.c b/libobjc/gc.c
index d36a9cc77de..5ea4f8a0915 100644
--- a/libobjc/gc.c
+++ b/libobjc/gc.c
@@ -422,11 +422,15 @@ class_ivar_set_gcinvisible (Class class, const char *ivarname,
/* The variable is gc visible so we make it gc_invisible. */
new_type = objc_malloc (strlen(ivar->ivar_type) + 2);
+
+ /* Copy the variable name. */
len = (type - ivar->ivar_type);
memcpy (new_type, ivar->ivar_type, len);
- new_type[len] = 0;
- strcat (new_type, "!");
- strcat (new_type, type);
+ /* Add '!'. */
+ new_type[len++] = _C_GCINVISIBLE;
+ /* Copy the original types. */
+ strcpy (new_type + len, type);
+
ivar->ivar_type = new_type;
}