--- RabbitMQ.xs 2010-07-18 13:04:33.000000000 -0400 +++ RabbitMQ.xs.new 2010-08-04 14:40:40.543962786 -0400 @@ -92,7 +92,7 @@ HV *props; props = newHV(); - hv_store(RETVAL, "props", strlen("props"), newRV((SV *)props), 0); + hv_store(RETVAL, "props", strlen("props"), newRV_noinc((SV *)props), 0); p = (amqp_basic_properties_t *) frame.payload.properties.decoded; if (p->_flags & AMQP_BASIC_CONTENT_TYPE_FLAG) { @@ -384,6 +384,7 @@ int result = 0; CODE: RETVAL = newHV(); + sv_2mortal((SV*)RETVAL); result = internal_recv(RETVAL, conn, 0); if(result <= 0) Perl_croak(aTHX_ "Bad frame read."); OUTPUT: @@ -533,7 +534,7 @@ rv = internal_recv(hv, conn, 1); if(rv <= 0) Perl_croak(aTHX_ "Bad frame read."); } - RETVAL = (SV *)newRV((SV *)hv); + RETVAL = (SV *)newRV_noinc((SV *)hv); } else RETVAL = &PL_sv_undef;