else
bs = rar->bytes_uncopied;
ret = copy_from_lzss_window(a, buff, rar->offset, bs);
- if (ret != ARCHIVE_OK)
+ if (ret != ARCHIVE_OK) {
+ __archive_ppmd7_functions.Ppmd7_Free(&rar->ppmd7_context, &g_szalloc);
return (ret);
+ }
rar->offset += bs;
rar->bytes_uncopied -= bs;
if (*buff != NULL) {
}
if (!rar->br.next_in &&
- (ret = rar_br_preparation(a, &(rar->br))) < ARCHIVE_WARN)
+ (ret = rar_br_preparation(a, &(rar->br))) < ARCHIVE_WARN) {
+ __archive_ppmd7_functions.Ppmd7_Free(&rar->ppmd7_context, &g_szalloc);
return (ret);
- if (rar->start_new_table && ((ret = parse_codes(a)) < (ARCHIVE_WARN)))
+ }
+ if (rar->start_new_table && ((ret = parse_codes(a)) < (ARCHIVE_WARN))) {
+ __archive_ppmd7_functions.Ppmd7_Free(&rar->ppmd7_context, &g_szalloc);
return (ret);
+ }
if (rar->is_ppmd_block)
{
if ((sym = __archive_ppmd7_functions.Ppmd7_DecodeSymbol(
&rar->ppmd7_context, &rar->range_dec.p)) < 0)
{
+ __archive_ppmd7_functions.Ppmd7_Free(&rar->ppmd7_context, &g_szalloc);
archive_set_error(&a->archive, ARCHIVE_ERRNO_FILE_FORMAT,
"Invalid symbol");
return (ARCHIVE_FATAL);
if ((code = __archive_ppmd7_functions.Ppmd7_DecodeSymbol(
&rar->ppmd7_context, &rar->range_dec.p)) < 0)
{
+ __archive_ppmd7_functions.Ppmd7_Free(&rar->ppmd7_context, &g_szalloc);
archive_set_error(&a->archive, ARCHIVE_ERRNO_FILE_FORMAT,
"Invalid symbol");
return (ARCHIVE_FATAL);
continue;
case 3:
+ __archive_ppmd7_functions.Ppmd7_Free(&rar->ppmd7_context,
+ &g_szalloc);
archive_set_error(&a->archive, ARCHIVE_ERRNO_FILE_FORMAT,
"Parsing filters is unsupported.");
return (ARCHIVE_FAILED);
if ((code = __archive_ppmd7_functions.Ppmd7_DecodeSymbol(
&rar->ppmd7_context, &rar->range_dec.p)) < 0)
{
+ __archive_ppmd7_functions.Ppmd7_Free(&rar->ppmd7_context,
+ &g_szalloc);
archive_set_error(&a->archive, ARCHIVE_ERRNO_FILE_FORMAT,
"Invalid symbol");
return (ARCHIVE_FATAL);
if ((length = __archive_ppmd7_functions.Ppmd7_DecodeSymbol(
&rar->ppmd7_context, &rar->range_dec.p)) < 0)
{
+ __archive_ppmd7_functions.Ppmd7_Free(&rar->ppmd7_context,
+ &g_szalloc);
archive_set_error(&a->archive, ARCHIVE_ERRNO_FILE_FORMAT,
"Invalid symbol");
return (ARCHIVE_FATAL);
if ((length = __archive_ppmd7_functions.Ppmd7_DecodeSymbol(
&rar->ppmd7_context, &rar->range_dec.p)) < 0)
{
+ __archive_ppmd7_functions.Ppmd7_Free(&rar->ppmd7_context,
+ &g_szalloc);
archive_set_error(&a->archive, ARCHIVE_ERRNO_FILE_FORMAT,
"Invalid symbol");
return (ARCHIVE_FATAL);
else
bs = rar->bytes_uncopied;
ret = copy_from_lzss_window(a, buff, rar->offset, bs);
- if (ret != ARCHIVE_OK)
+ if (ret != ARCHIVE_OK) {
+ __archive_ppmd7_functions.Ppmd7_Free(&rar->ppmd7_context,
+ &g_szalloc);
return (ret);
+ }
rar->offset += bs;
rar->bytes_uncopied -= bs;
/*