comparison src/share/vm/runtime/globals.cpp @ 14183:6c583aa36bc9

8029070: memory leak in jmm_SetVMGlobal Reviewed-by: kvn, dholmes
author iignatyev
date Mon, 23 Dec 2013 20:56:18 +0400
parents b7cd330fd5b6
children 234d576115b5
comparison
equal deleted inserted replaced
14181:27c84ba76954 14183:6c583aa36bc9
700 if (!result->is_ccstr()) return false; 700 if (!result->is_ccstr()) return false;
701 *value = result->get_ccstr(); 701 *value = result->get_ccstr();
702 return true; 702 return true;
703 } 703 }
704 704
705 // Contract: Flag will make private copy of the incoming value.
706 // Outgoing value is always malloc-ed, and caller MUST call free.
707 bool CommandLineFlags::ccstrAtPut(char* name, size_t len, ccstr* value, Flag::Flags origin) { 705 bool CommandLineFlags::ccstrAtPut(char* name, size_t len, ccstr* value, Flag::Flags origin) {
708 Flag* result = Flag::find_flag(name, len); 706 Flag* result = Flag::find_flag(name, len);
709 if (result == NULL) return false; 707 if (result == NULL) return false;
710 if (!result->is_ccstr()) return false; 708 if (!result->is_ccstr()) return false;
711 ccstr old_value = result->get_ccstr(); 709 ccstr old_value = result->get_ccstr();
724 *value = old_value; 722 *value = old_value;
725 result->set_origin(origin); 723 result->set_origin(origin);
726 return true; 724 return true;
727 } 725 }
728 726
729 // Contract: Flag will make private copy of the incoming value.
730 void CommandLineFlagsEx::ccstrAtPut(CommandLineFlagWithType flag, ccstr value, Flag::Flags origin) { 727 void CommandLineFlagsEx::ccstrAtPut(CommandLineFlagWithType flag, ccstr value, Flag::Flags origin) {
731 Flag* faddr = address_of_flag(flag); 728 Flag* faddr = address_of_flag(flag);
732 guarantee(faddr != NULL && faddr->is_ccstr(), "wrong flag type"); 729 guarantee(faddr != NULL && faddr->is_ccstr(), "wrong flag type");
733 ccstr old_value = faddr->get_ccstr(); 730 ccstr old_value = faddr->get_ccstr();
734 char* new_value = NEW_C_HEAP_ARRAY(char, strlen(value)+1, mtInternal); 731 char* new_value = NEW_C_HEAP_ARRAY(char, strlen(value)+1, mtInternal);