Пример #1
0
void
srl_destroy_encoder(pTHX_ srl_encoder_t *enc)
{
    Safefree(enc->buf_start);
    Safefree(enc->snappy_workmem);
    if (enc->ref_seenhash != NULL)
        PTABLE_free(enc->ref_seenhash);
    if (enc->str_seenhash != NULL)
        PTABLE_free(enc->str_seenhash);
    if (enc->weak_seenhash != NULL)
        PTABLE_free(enc->weak_seenhash);
    Safefree(enc);
}
Пример #2
0
/* Explicit destructor */
void
srl_destroy_decoder(pTHX_ srl_decoder_t *dec)
{
    PTABLE_free(dec->ref_seenhash);
    if (dec->ref_stashes) {
        PTABLE_free(dec->ref_stashes);
        PTABLE_free(dec->ref_bless_av);
    }
    if (dec->weakref_av) {
        SvREFCNT_dec(dec->weakref_av);
        dec->weakref_av = NULL;
    }
    Safefree(dec);
}
Пример #3
0
void
srl_destroy_merger(pTHX_ srl_merger_t *mrg)
{
    srl_buf_free_buffer(aTHX_ &mrg->obuf);

    srl_destroy_snappy_workmem(aTHX_ mrg->snappy_workmem);

    if (mrg->tracked_offsets) {
        srl_stack_destroy(aTHX_ mrg->tracked_offsets);
        Safefree(mrg->tracked_offsets);
        mrg->tracked_offsets = NULL;
    }

    if (mrg->tracked_offsets_tbl) {
        PTABLE_free(mrg->tracked_offsets_tbl);
        mrg->tracked_offsets_tbl = NULL;
    }

    if (mrg->string_deduper_tbl) {
        STRTABLE_free(mrg->string_deduper_tbl);
        mrg->string_deduper_tbl = NULL;
    }

    if (mrg->classname_deduper_tbl) {
        STRTABLE_free(mrg->classname_deduper_tbl);
        mrg->classname_deduper_tbl = NULL;
    }

    Safefree(mrg);
}
Пример #4
0
void ddl_destructor_hook(void *p)
{
  ddl_encoder_t *enc = (ddl_encoder_t *)p;
  /* Exception cleanup. Under normal operation, we should have
   * assigned NULL to buf_start after we're done. */
  Safefree(enc->buf_start);
  PTABLE_free(enc->seenhash);
  Safefree(enc);
}