- } else if (!in_eval) {
- if (dsv) {
- /* We are about to croak() while dsv is being destroyed. Try to clean up
- * things a bit. */
- MAGIC *mg = SvMAGIC(dsv);
- SvREFCNT_dec((SV *) mg->mg_ptr);
- /* mg->mg_obj may not be refcounted if the data constructor returned the
- * variable itself. */
- if (mg->mg_flags & MGf_REFCOUNTED)
- SvREFCNT_dec(mg->mg_obj);
- SvMAGIC_set(dsv, mg->mg_moremagic);
- Safefree(mg);
- mg_magical(dsv);
- SvREFCNT_dec(dsv);
- }