@@ -826,22 +826,12 @@ static VALUE Message_to_h(VALUE _self) {
826826 * Freezes the message object. We have to intercept this so we can pin the
827827 * Ruby object into memory so we don't forget it's frozen.
828828 */
829- static VALUE Message_freeze (VALUE _self ) {
829+ VALUE Message_freeze (VALUE _self ) {
830830 Message * self = ruby_to_Message (_self );
831- if (!RB_OBJ_FROZEN (_self )) {
832- Arena_Pin (self -> arena , _self );
833- RB_OBJ_FREEZE (_self );
834- }
835- return _self ;
836- }
837831
838- /*
839- * Deep freezes the message object recursively.
840- * Internal use only.
841- */
842- VALUE Message_internal_deep_freeze (VALUE _self ) {
843- Message * self = ruby_to_Message (_self );
844- Message_freeze (_self );
832+ if (RB_OBJ_FROZEN (_self )) return _self ;
833+ Arena_Pin (self -> arena , _self );
834+ RB_OBJ_FREEZE (_self );
845835
846836 int n = upb_MessageDef_FieldCount (self -> msgdef );
847837 for (int i = 0 ; i < n ; i ++ ) {
@@ -850,11 +840,11 @@ VALUE Message_internal_deep_freeze(VALUE _self) {
850840
851841 if (field != Qnil ) {
852842 if (upb_FieldDef_IsMap (f )) {
853- Map_internal_deep_freeze (field );
843+ Map_freeze (field );
854844 } else if (upb_FieldDef_IsRepeated (f )) {
855- RepeatedField_internal_deep_freeze (field );
845+ RepeatedField_freeze (field );
856846 } else if (upb_FieldDef_IsSubMessage (f )) {
857- Message_internal_deep_freeze (field );
847+ Message_freeze (field );
858848 }
859849 }
860850 }
@@ -963,7 +953,7 @@ VALUE Message_decode_bytes(int size, const char* bytes, int options,
963953 rb_raise (cParseError , "Error occurred during parsing" );
964954 }
965955 if (freeze ) {
966- Message_internal_deep_freeze (msg_rb );
956+ Message_freeze (msg_rb );
967957 }
968958 return msg_rb ;
969959}
0 commit comments