diff --git a/libjava/ChangeLog b/libjava/ChangeLog index d13425b1316c24445d203bdc1ca18018ca4cdb55..a2357c3e747e7e2a95ec55b1797ac80dd3abe3be 100644 --- a/libjava/ChangeLog +++ b/libjava/ChangeLog @@ -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. diff --git a/libjava/prims.cc b/libjava/prims.cc index 09bca0b6f71f00ad8e737aaae4b60b1817501c26..a968a9b3013f7be844833330518dad63cc96daaa 100644 --- a/libjava/prims.cc +++ b/libjava/prims.cc @@ -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)))