From 2c4a761982df036b6b361ae57ea03c680c722769 Mon Sep 17 00:00:00 2001 From: Randy Gaul Date: Mon, 12 Feb 2018 00:50:40 -0800 Subject: [PATCH] __cdecl markup for non-standard calling conventions via MSVC --- imgui.cpp | 10 ++++++++-- stb_rect_pack.h | 6 ++++-- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/imgui.cpp b/imgui.cpp index a0eb2d70..ad4fdfb2 100644 --- a/imgui.cpp +++ b/imgui.cpp @@ -661,6 +661,12 @@ #pragma warning (disable: 4996) // 'This function or variable may be unsafe': strcpy, strdup, sprintf, vsnprintf, sscanf, fopen #endif +#ifdef _MSC_VER + #define IMGUI_CDECL __cdecl +#else + #define IMGUI_CDECL +#endif + // Clang warnings with -Weverything #ifdef __clang__ #pragma clang diagnostic ignored "-Wunknown-pragmas" // warning : unknown warning group '-Wformat-pedantic *' // not all warnings are known by all clang versions.. so ignoring warnings triggers new warnings on some configuration. great! @@ -1504,7 +1510,7 @@ void ImGuiStorage::BuildSortByKey() { struct StaticFunc { - static int PairCompareByID(const void* lhs, const void* rhs) + static int IMGUI_CDECL PairCompareByID(const void* lhs, const void* rhs) { // We can't just do a subtraction because qsort uses signed integers and subtracting our ID doesn't play well with that. if (((const Pair*)lhs)->key > ((const Pair*)rhs)->key) return +1; @@ -3793,7 +3799,7 @@ static void MarkIniSettingsDirty(ImGuiWindow* window) } // FIXME: Add a more explicit sort order in the window structure. -static int ChildWindowComparer(const void* lhs, const void* rhs) +static int IMGUI_CDECL ChildWindowComparer(const void* lhs, const void* rhs) { const ImGuiWindow* a = *(const ImGuiWindow**)lhs; const ImGuiWindow* b = *(const ImGuiWindow**)rhs; diff --git a/stb_rect_pack.h b/stb_rect_pack.h index c75527da..c581cd01 100644 --- a/stb_rect_pack.h +++ b/stb_rect_pack.h @@ -202,8 +202,10 @@ struct stbrp_context #ifdef _MSC_VER #define STBRP__NOTUSED(v) (void)(v) +#define STBRP__CDECL __cdecl #else #define STBRP__NOTUSED(v) (void)sizeof(v) +#define STBRP__CDECL #endif enum @@ -509,7 +511,7 @@ static stbrp__findresult stbrp__skyline_pack_rectangle(stbrp_context *context, i return res; } -static int rect_height_compare(const void *a, const void *b) +static int STBRP__CDECL rect_height_compare(const void *a, const void *b) { const stbrp_rect *p = (const stbrp_rect *) a; const stbrp_rect *q = (const stbrp_rect *) b; @@ -531,7 +533,7 @@ static int rect_width_compare(const void *a, const void *b) return (p->h > q->h) ? -1 : (p->h < q->h); } -static int rect_original_order(const void *a, const void *b) +static int STBRP__CDECL rect_original_order(const void *a, const void *b) { const stbrp_rect *p = (const stbrp_rect *) a; const stbrp_rect *q = (const stbrp_rect *) b;