libsquashfs  1.3.2
A new set of tools and libraries for working with SquashFS images
predef.h File Reference

Includes forward declarations of data structures, macros and integer types. More...

#include <stdbool.h>
#include <stddef.h>
#include <stdint.h>

Go to the source code of this file.

Data Structures

interface  sqfs_object_t
 Base interface for all libsquashfs in-memory data structures. More...
 

Macros

#define SQFS_API
 
#define SQFS_INTERNAL
 
#define SQFS_INLINE   __inline__ __attribute__((always_inline))
 

Typedefs

typedef uint8_t sqfs_u8
 
typedef uint16_t sqfs_u16
 
typedef uint32_t sqfs_u32
 
typedef uint64_t sqfs_u64
 
typedef int8_t sqfs_s8
 
typedef int16_t sqfs_s16
 
typedef int32_t sqfs_s32
 
typedef int64_t sqfs_s64
 
typedef struct sqfs_block_hooks_t sqfs_block_hooks_t
 
typedef struct sqfs_block_writer_stats_t sqfs_block_writer_stats_t
 

Functions

SQFS_API void sqfs_free (void *ptr)
 Free a block of memory created by the squashfs library. More...
 

Detailed Description

Includes forward declarations of data structures, macros and integer types.

Definition in file predef.h.

Function Documentation

◆ sqfs_free()

SQFS_API void sqfs_free ( void *  ptr)

Free a block of memory created by the squashfs library.

Some objects in the squashfs library allocate temporary chunks of memory and return pointers to them, with the expectation that the user takes care of freeing them memory again.

In the past this worked without hitches, because most sane operating systems have a single, global C library that everything is linked against. On systems like Windows that have a huge fragmentation of runtime libraries this fails, because the library and application can easily end up linked against different runtime libraries, making it impossible for the program to free the memory.

To re-create the same situation on Linux, one would have to link a program and the squashfs library dynamically, while linking at least one of them statically against the C runtime, or intentionally linking against two different runtimes.

This function mitigates the arising problem by exposing the free() function of the libraries runtime to the application, so it can propperly release memory again to the correct heap.

To maintain API/ABI compatibillity, it is guaranteed that for all versions of libsquashfs with major version 1, this function does nothing other than call free() on the C runtime that the library was linked against. If just calling free() works on your system, it will continue to work, and older application will continue to work with newer versions of libsquashfs 1.x. Going forward, new applications using libsquashfs should use this function instead for better portabillity.

Parameters
ptrA pointer to a memory block returned by a libsquashfs function.