Rizin
unix-like reverse engineering framework and cli tools
zip_source_free.c File Reference
#include <stdlib.h>
#include "zipint.h"

Go to the source code of this file.

Functions

ZIP_EXTERN void zip_source_free (zip_source_t *src)
 

Function Documentation

◆ zip_source_free()

ZIP_EXTERN void zip_source_free ( zip_source_t src)

Definition at line 41 of file zip_source_free.c.

41  {
42  if (src == NULL)
43  return;
44 
45  if (src->refcount > 0) {
46  src->refcount--;
47  }
48  if (src->refcount > 0) {
49  return;
50  }
51 
53  src->open_count = 1; /* force close */
55  }
58  }
59 
60  if (src->source_archive && !src->source_closed) {
61  _zip_deregister_source(src->source_archive, src);
62  }
63 
65 
66  if (src->src) {
67  zip_source_free(src->src);
68  }
69 
70  free(src);
71 }
lzma_index * src
Definition: index.h:567
#define NULL
Definition: cris-opc.c:27
RZ_API void Ht_() free(HtName_(Ht) *ht)
Definition: ht_inc.c:130
ZIP_EXTERN int zip_source_close(zip_source_t *_Nonnull)
ZIP_EXTERN void zip_source_rollback_write(zip_source_t *_Nonnull)
@ ZIP_SOURCE_FREE
Definition: zip.h:225
zip_int64_t _zip_source_call(zip_source_t *src, void *data, zip_uint64_t length, zip_source_cmd_t command)
ZIP_EXTERN void zip_source_free(zip_source_t *src)
void _zip_deregister_source(zip_t *za, zip_source_t *src)
#define ZIP_SOURCE_IS_OPEN_WRITING(src)
Definition: zipint.h:403
#define ZIP_SOURCE_IS_OPEN_READING(src)
Definition: zipint.h:402

References _zip_deregister_source(), _zip_source_call(), free(), NULL, src, zip_source_close(), ZIP_SOURCE_FREE, zip_source_free(), ZIP_SOURCE_IS_OPEN_READING, ZIP_SOURCE_IS_OPEN_WRITING, and zip_source_rollback_write().

Referenced by _zip_source_zip_new(), _zip_unchange_data(), add(), add_data(), add_file(), add_from_zip(), add_nul(), LLVMFuzzerTestOneInput(), main(), merge_zip(), read_from_file(), read_hole(), read_to_memory(), replace_file_contents(), rz_io_zip_flush_file(), windows_open(), zip_close(), zip_dir_add(), zip_discard(), zip_fclose(), zip_fdopen(), zip_fopen_index_encrypted(), zip_open(), zip_source_free(), and ziptool_post_close().