Use __cdecl also for function pointers in liblzma API when

on Windows.
This commit is contained in:
Lasse Collin 2009-02-01 00:10:07 +02:00
parent 6a2eb54092
commit d64ca34f1b
3 changed files with 20 additions and 20 deletions

View File

@ -154,15 +154,19 @@
******************/
/*
* Some systems require that the functions are declared specially
* in the headers.
* Some systems require (or at least recommend) that the functions and
* function pointers are declared specially in the headers.
*/
#ifdef _WIN32
# define LZMA_API_CALL __cdecl
# define LZMA_API_IMPORT __declspec(dllimport)
#else
# define LZMA_API_CALL
# define LZMA_API_IMPORT
#endif
#ifndef LZMA_API
# if defined(_WIN32)
# define LZMA_API __cdecl __declspec(dllimport)
# else
# define LZMA_API
# endif
# define LZMA_API LZMA_API_CALL LZMA_API_IMPORT
#endif

View File

@ -376,7 +376,7 @@ typedef struct {
* returned NULL if some function from liblzma
* returns LZMA_MEM_ERROR.
*/
void *(*alloc)(void *opaque, size_t nmemb, size_t size);
void *(LZMA_API_CALL *alloc)(void *opaque, size_t nmemb, size_t size);
/**
* \brief Pointer to a custom memory freeing function
@ -390,7 +390,7 @@ typedef struct {
* or when it is set to NULL, a pointer returned
* by the standard malloc().
*/
void (*free)(void *opaque, void *ptr);
void (LZMA_API_CALL *free)(void *opaque, void *ptr);
/**
* \brief Pointer passed to .alloc() and .free()

View File

@ -24,20 +24,16 @@
#include "../../common/mythread.h"
#include "../../common/integer.h"
// Don't use ifdef...
#if HAVE_VISIBILITY
# define LZMA_VISIBILITY __attribute__((__visibility__("default")))
#if defined(_WIN32)
# define LZMA_API_EXPORT __declspec(dllexport)
// Don't use ifdef or defined() below.
#elif HAVE_VISIBILITY
# define LZMA_API_EXPORT __attribute__((__visibility__("default")))
#else
# define LZMA_VISIBILITY
# define LZMA_API_EXPORT
#endif
#ifdef _WIN32
# define LZMA_EXPORT __cdecl __declspec(dllexport)
#else
# define LZMA_EXPORT
#endif
#define LZMA_API LZMA_VISIBILITY LZMA_EXPORT
#define LZMA_API LZMA_API_CALL LZMA_API_EXPORT
#include "lzma.h"