comparison src/share/vm/runtime/globals.cpp @ 20248:009de2b033fc

8029070: memory leak in jmm_SetVMGlobal Reviewed-by: kvn, dholmes
author iignatyev
date Mon, 23 Dec 2013 20:56:18 +0400
parents 78bbf4d43a14
children 0c48231c5c84
comparison
equal deleted inserted replaced
20241:bcd72ab4d91f 20248:009de2b033fc
757 if (!result->is_ccstr()) return false; 757 if (!result->is_ccstr()) return false;
758 *value = result->get_ccstr(); 758 *value = result->get_ccstr();
759 return true; 759 return true;
760 } 760 }
761 761
762 // Contract: Flag will make private copy of the incoming value.
763 // Outgoing value is always malloc-ed, and caller MUST call free.
764 bool CommandLineFlags::ccstrAtPut(char* name, size_t len, ccstr* value, Flag::Flags origin) { 762 bool CommandLineFlags::ccstrAtPut(char* name, size_t len, ccstr* value, Flag::Flags origin) {
765 Flag* result = Flag::find_flag(name, len); 763 Flag* result = Flag::find_flag(name, len);
766 if (result == NULL) return false; 764 if (result == NULL) return false;
767 if (!result->is_ccstr()) return false; 765 if (!result->is_ccstr()) return false;
768 ccstr old_value = result->get_ccstr(); 766 ccstr old_value = result->get_ccstr();
782 *value = old_value; 780 *value = old_value;
783 result->set_origin(origin); 781 result->set_origin(origin);
784 return true; 782 return true;
785 } 783 }
786 784
787 // Contract: Flag will make private copy of the incoming value.
788 void CommandLineFlagsEx::ccstrAtPut(CommandLineFlagWithType flag, ccstr value, Flag::Flags origin) { 785 void CommandLineFlagsEx::ccstrAtPut(CommandLineFlagWithType flag, ccstr value, Flag::Flags origin) {
789 Flag* faddr = address_of_flag(flag); 786 Flag* faddr = address_of_flag(flag);
790 guarantee(faddr != NULL && faddr->is_ccstr(), "wrong flag type"); 787 guarantee(faddr != NULL && faddr->is_ccstr(), "wrong flag type");
791 ccstr old_value = faddr->get_ccstr(); 788 ccstr old_value = faddr->get_ccstr();
792 trace_flag_changed<EventStringFlagChanged, const char*>(faddr->_name, old_value, value, origin); 789 trace_flag_changed<EventStringFlagChanged, const char*>(faddr->_name, old_value, value, origin);