src/share/vm/runtime/globals.cpp

changeset 805
885fe0f95828
parent 631
d1605aabd0a1
child 807
be41fa651400
equal deleted inserted replaced
804:5f85534046c2 805:885fe0f95828
353 bool CommandLineFlags::ccstrAtPut(char* name, size_t len, ccstr* value, FlagValueOrigin origin) { 353 bool CommandLineFlags::ccstrAtPut(char* name, size_t len, ccstr* value, FlagValueOrigin origin) {
354 Flag* result = Flag::find_flag(name, len); 354 Flag* result = Flag::find_flag(name, len);
355 if (result == NULL) return false; 355 if (result == NULL) return false;
356 if (!result->is_ccstr()) return false; 356 if (!result->is_ccstr()) return false;
357 ccstr old_value = result->get_ccstr(); 357 ccstr old_value = result->get_ccstr();
358 char* new_value = NEW_C_HEAP_ARRAY(char, strlen(*value)+1); 358 char* new_value = NULL;
359 strcpy(new_value, *value); 359 if (*value != NULL) {
360 new_value = NEW_C_HEAP_ARRAY(char, strlen(*value)+1);
361 strcpy(new_value, *value);
362 }
360 result->set_ccstr(new_value); 363 result->set_ccstr(new_value);
361 if (result->origin == DEFAULT && old_value != NULL) { 364 if (result->origin == DEFAULT && old_value != NULL) {
362 // Prior value is NOT heap allocated, but was a literal constant. 365 // Prior value is NOT heap allocated, but was a literal constant.
363 char* old_value_to_free = NEW_C_HEAP_ARRAY(char, strlen(old_value)+1); 366 char* old_value_to_free = NEW_C_HEAP_ARRAY(char, strlen(old_value)+1);
364 strcpy(old_value_to_free, old_value); 367 strcpy(old_value_to_free, old_value);

mercurial