1From f43ef44806ffb8e3b35d99070dde9b6cc1714d3d Mon Sep 17 00:00:00 2001 2From: Khem Raj <raj.khem@gmail.com> 3Date: Tue, 8 Sep 2015 21:32:20 +0000 4Subject: [PATCH] gfx,direct: Aboid usng VLAs and printf formats 5 6VLAs are flagged by clang when using non-POD types, therefore replace 7the usage with alloca which is exact same allocation on stack 8 9 __attribute__((__format__ (__printf__))) is not portable as used here 10 therefore disable the check for clang here, we lose no functionality 11 12Signed-off-by: Khem Raj <raj.khem@gmail.com> 13--- 14Upstream-Status: Pending 15 16 lib/direct/util.h | 2 +- 17 src/gfx/util.cpp | 8 ++++---- 18 2 files changed, 5 insertions(+), 5 deletions(-) 19 20diff --git a/lib/direct/util.h b/lib/direct/util.h 21index 72941e9..8e7fa4a 100644 22--- a/lib/direct/util.h 23+++ b/lib/direct/util.h 24@@ -98,7 +98,7 @@ 25 #define D_CONST_FUNC 26 #endif 27 28-#if __GNUC__ >= 3 29+#if __GNUC__ >= 3 && !defined __clang__ 30 #define D_FORMAT_PRINTF(n) __attribute__((__format__ (__printf__, n, n+1))) 31 #define D_FORMAT_VPRINTF(n) __attribute__((__format__ (__printf__, n, 0))) 32 #else 33diff --git a/src/gfx/util.cpp b/src/gfx/util.cpp 34index 40032bc..d1015d4 100644 35--- a/src/gfx/util.cpp 36+++ b/src/gfx/util.cpp 37@@ -294,8 +294,8 @@ dfb_gfx_copy_regions_stereo( CoreSurface *source, 38 { 39 unsigned int i, n = 0; 40 DFBRectangle rect = { 0, 0, source->config.size.w, source->config.size.h }; 41- DFBRectangle rects[num]; 42- DFBPoint points[num]; 43+ DFBRectangle *rects = (DFBRectangle*)alloca( sizeof(struct DFBRectangle) * num); 44+ DFBPoint *points = (DFBPoint*)alloca( sizeof(struct DFBPoint) * num); 45 46 for (i=0; i<num; i++) { 47 DFB_REGION_ASSERT( ®ions[i] ); 48@@ -351,8 +351,8 @@ dfb_gfx_copy_regions_client( CoreSurface *source, 49 { 50 unsigned int i, n = 0; 51 DFBRectangle rect = { 0, 0, source->config.size.w, source->config.size.h }; 52- DFBRectangle rects[num]; 53- DFBPoint points[num]; 54+ DFBRectangle *rects = (DFBRectangle*)alloca( sizeof(struct DFBRectangle) * num); 55+ DFBPoint *points = (DFBPoint*)alloca( sizeof(struct DFBPoint) * num); 56 CoreGraphicsStateClient *client = _client ? _client : &StateClient::Get()->client; 57 CardState *state = client->state; 58 CardState backup; 59-- 602.5.1 61 62