* prims.cc (next_property_value): Never return NULL.
authortromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 24 Jan 2006 18:10:39 +0000 (18:10 +0000)
committertromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 24 Jan 2006 18:10:39 +0000 (18:10 +0000)
(process_gcj_properties): Copy 'props' before using it.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@110177 138bc75d-0d04-0410-961f-82ee72b054a4

libjava/ChangeLog
libjava/prims.cc

index d13425b..a2357c3 100644 (file)
@@ -1,3 +1,9 @@
+2006-01-24  Archit Shah  <ashah@redhat.com>
+           Tom Tromey  <tromey@redhat.com>
+
+       * prims.cc (next_property_value): Never return NULL.
+       (process_gcj_properties): Copy 'props' before using it.
+
 2006-01-23  Keith Seitz  <keiths@redhat.com>
 
        * java/lang/Class.h (_Jv_FindInterpreterMethod): Add new declaration.
index 09bca0b..a968a9b 100644 (file)
@@ -857,10 +857,6 @@ next_property_value (char *s, size_t *length)
   while (isspace (*s))
     s++;
 
-  // If we've reached the end, return NULL.
-  if (*s == 0)
-    return NULL;
-
   // Determine the length of the property value.
   while (s[l] != 0
         && ! isspace (s[l])
@@ -883,13 +879,18 @@ static void
 process_gcj_properties ()
 {
   char *props = getenv("GCJ_PROPERTIES");
-  char *p = props;
-  size_t length;
-  size_t property_count = 0;
 
   if (NULL == props)
     return;
 
+  // Later on we will write \0s into this string.  It is simplest to
+  // just duplicate it here.
+  props = strdup (props);
+
+  char *p = props;
+  size_t length;
+  size_t property_count = 0;
+
   // Whip through props quickly in order to count the number of
   // property values.
   while (p && (p = next_property_key (p, &length)))