decklink: Calculate string size before malloc

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4738>
This commit is contained in:
Maksym Khomenko 2023-05-31 23:44:42 +03:00 committed by Sebastian Dröge
parent ab946cd41e
commit 72e7ae724f

View file

@ -50,7 +50,15 @@
#include "osx/DeckLinkAPI.h" #include "osx/DeckLinkAPI.h"
#define COMSTR_T CFStringRef #define COMSTR_T CFStringRef
#define CONVERT_COM_STRING(s) G_STMT_START { CFStringRef _s = (CFStringRef)s; s = (char*) malloc(100); CFStringGetCString(_s, s, 100, kCFStringEncodingUTF8); CFRelease(_s); } G_STMT_END #define CONVERT_COM_STRING(s) G_STMT_START { \
CFStringRef _s = (CFStringRef)s; \
CFIndex _length; \
CFStringGetBytes(_s, CFRangeMake(0, CFStringGetLength(_s)), kCFStringEncodingUTF8, 0, FALSE, NULL, 0, &_length); \
_length += 1; \
s = (char *) malloc(_length); \
CFStringGetCString(_s, s, _length, kCFStringEncodingUTF8); \
CFRelease(_s); \
} G_STMT_END
#define FREE_COM_STRING(s) free(s); #define FREE_COM_STRING(s) free(s);
#define CONVERT_TO_COM_STRING(s) G_STMT_START { char * _s = (char *)s; s = CFStringCreateWithCString(kCFAllocatorDefault, _s, kCFStringEncodingUTF8); g_free(_s); } G_STMT_END #define CONVERT_TO_COM_STRING(s) G_STMT_START { char * _s = (char *)s; s = CFStringCreateWithCString(kCFAllocatorDefault, _s, kCFStringEncodingUTF8); g_free(_s); } G_STMT_END
#define WINAPI #define WINAPI