From ccd2e4375a3a8d1338d15d00193ff56da63809c3 Mon Sep 17 00:00:00 2001 From: Sergey Sharybin Date: Wed, 9 Oct 2013 19:49:09 +0000 Subject: Fix compilation error after recent libmv change - Tweaked typedefs in stdint so they match what we've got in BLI_sys_types (needed to explicitly tell sign to MSVC). Not so much harmful to be more explicit here, but we really better to have single stdint int blender. - Tweaked allocations macros so MSVC is happy with structures allocation. --- extern/libmv/libmv-capi.cc | 27 ++++++++++++++------------- extern/libmv/third_party/msinttypes/stdint.h | 12 ++++++------ 2 files changed, 20 insertions(+), 19 deletions(-) (limited to 'extern/libmv') diff --git a/extern/libmv/libmv-capi.cc b/extern/libmv/libmv-capi.cc index a7509fd6b45..717c54acd85 100644 --- a/extern/libmv/libmv-capi.cc +++ b/extern/libmv/libmv-capi.cc @@ -43,12 +43,17 @@ # include #endif +#if defined(_MSC_VER) +# define __func__ __FUNCTION__ +#endif + #ifdef WITH_LIBMV_GUARDED_ALLOC # include "MEM_guardedalloc.h" # define LIBMV_OBJECT_NEW OBJECT_GUARDED_NEW # define LIBMV_OBJECT_DELETE OBJECT_GUARDED_DELETE # define LIBMV_OBJECT_DELETE OBJECT_GUARDED_DELETE -# define LIBMV_OBJECT_DELETE_ARRAY OBJECT_GUARDED_DELETE_ARRAY +# define LIBMV_STRUCT_NEW(type, count) (type*)MEM_mallocN(sizeof(type) * count, __func__) +# define LIBMV_STRUCT_DELETE(what) MEM_freeN(what) #else // Need this to keep libmv-capi potentially standalone. # if defined __GNUC__ || defined __sun @@ -63,11 +68,8 @@ ((type*)(what))->~type(); \ free(what); \ } } (void)0 -#define LIBMV_OBJECT_DELETE_ARRAY(what, type, count) \ - { if(what) { \ - for (int i = 0; i < count; i++) ((type*)(what))[i].~type(); \ - free(what); \ - } } (void)0 +# define LIBMV_STRUCT_NEW(type, count) (type*)malloc(sizeof(type) * count) +# define LIBMV_STRUCT_DELETE(what) { if (what) free(what); } (void)0 #endif #include "libmv/logging/logging.h" @@ -875,7 +877,7 @@ struct libmv_Features *libmv_detectFeaturesFAST(const unsigned char *data, { libmv::Feature *features = NULL; std::vector v; - struct libmv_Features *libmv_features = LIBMV_OBJECT_NEW(libmv_Features); + struct libmv_Features *libmv_features = LIBMV_STRUCT_NEW(libmv_Features, 1); int i = 0, count; if (margin) { @@ -889,7 +891,7 @@ struct libmv_Features *libmv_detectFeaturesFAST(const unsigned char *data, count = v.size(); if (count) { - features = LIBMV_OBJECT_NEW(libmv::Feature[count]); + features = LIBMV_STRUCT_NEW(libmv::Feature, count); for(std::vector::iterator it = v.begin(); it != v.end(); it++) { features[i++] = *it; @@ -908,7 +910,7 @@ struct libmv_Features *libmv_detectFeaturesMORAVEC(const unsigned char *data, int margin, int count, int min_distance) { libmv::Feature *features = NULL; - struct libmv_Features *libmv_features = LIBMV_OBJECT_NEW(libmv_Features); + struct libmv_Features *libmv_features = LIBMV_STRUCT_NEW(libmv_Features, 1); if (count) { if (margin) { @@ -917,7 +919,7 @@ struct libmv_Features *libmv_detectFeaturesMORAVEC(const unsigned char *data, height -= 2 * margin; } - features = LIBMV_OBJECT_NEW(libmv::Feature[count]); + features = LIBMV_STRUCT_NEW(libmv::Feature, count); libmv::DetectMORAVEC(data, stride, width, height, features, &count, min_distance, NULL); } @@ -931,11 +933,10 @@ struct libmv_Features *libmv_detectFeaturesMORAVEC(const unsigned char *data, void libmv_featuresDestroy(struct libmv_Features *libmv_features) { if (libmv_features->features) { - using libmv::Feature; - LIBMV_OBJECT_DELETE_ARRAY(libmv_features->features, Feature, libmv_features->count); + LIBMV_STRUCT_DELETE(libmv_features->features); } - LIBMV_OBJECT_DELETE(libmv_features, libmv_Features); + LIBMV_STRUCT_DELETE(libmv_features); } int libmv_countFeatures(const struct libmv_Features *libmv_features) diff --git a/extern/libmv/third_party/msinttypes/stdint.h b/extern/libmv/third_party/msinttypes/stdint.h index e236bb00015..189ee34571c 100644 --- a/extern/libmv/third_party/msinttypes/stdint.h +++ b/extern/libmv/third_party/msinttypes/stdint.h @@ -72,16 +72,16 @@ extern "C" { // realize that, e.g. char has the same size as __int8 // so we give up on __intX for them. #if (_MSC_VER < 1300) - typedef char int8_t; - typedef short int16_t; - typedef int int32_t; + typedef signed char int8_t; + typedef signed short int16_t; + typedef signed int int32_t; typedef unsigned char uint8_t; typedef unsigned short uint16_t; typedef unsigned int uint32_t; #else - typedef __int8 int8_t; - typedef __int16 int16_t; - typedef __int32 int32_t; + typedef signed __int8 int8_t; + typedef signed __int16 int16_t; + typedef signed __int32 int32_t; typedef unsigned __int8 uint8_t; typedef unsigned __int16 uint16_t; typedef unsigned __int32 uint32_t; -- cgit v1.2.3