comparison src/share/vm/runtime/globals.cpp @ 372:be41fa651400

Merge
author rasbold
date Tue, 30 Sep 2008 15:53:55 -0700
parents 1ee8caae33af 885fe0f95828
children 473cce303f13
comparison
equal deleted inserted replaced
365:5f44674206d3 372:be41fa651400
363 bool CommandLineFlags::ccstrAtPut(char* name, size_t len, ccstr* value, FlagValueOrigin origin) { 363 bool CommandLineFlags::ccstrAtPut(char* name, size_t len, ccstr* value, FlagValueOrigin origin) {
364 Flag* result = Flag::find_flag(name, len); 364 Flag* result = Flag::find_flag(name, len);
365 if (result == NULL) return false; 365 if (result == NULL) return false;
366 if (!result->is_ccstr()) return false; 366 if (!result->is_ccstr()) return false;
367 ccstr old_value = result->get_ccstr(); 367 ccstr old_value = result->get_ccstr();
368 char* new_value = NEW_C_HEAP_ARRAY(char, strlen(*value)+1); 368 char* new_value = NULL;
369 strcpy(new_value, *value); 369 if (*value != NULL) {
370 new_value = NEW_C_HEAP_ARRAY(char, strlen(*value)+1);
371 strcpy(new_value, *value);
372 }
370 result->set_ccstr(new_value); 373 result->set_ccstr(new_value);
371 if (result->origin == DEFAULT && old_value != NULL) { 374 if (result->origin == DEFAULT && old_value != NULL) {
372 // Prior value is NOT heap allocated, but was a literal constant. 375 // Prior value is NOT heap allocated, but was a literal constant.
373 char* old_value_to_free = NEW_C_HEAP_ARRAY(char, strlen(old_value)+1); 376 char* old_value_to_free = NEW_C_HEAP_ARRAY(char, strlen(old_value)+1);
374 strcpy(old_value_to_free, old_value); 377 strcpy(old_value_to_free, old_value);