aboutsummaryrefslogtreecommitdiff
path: root/cmake.deps/patches/libvterm-Remove-VLAs-for-MSVC.patch
blob: e999c0fa9b17075eb2fd3e2234eefb02bc51b376 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
From eb386b1d82f7d07363c9133b7aa06902ccd555fe Mon Sep 17 00:00:00 2001
Date: Tue, 27 Feb 2018 17:54:20 -0600
Subject: [PATCH] Remove VLAs for MSVC

VLAs are replaced with calls to _alloca() because MSVC does not support them.
---
 src/state.c | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/src/state.c b/src/state.c
index 84299df..f9aabb3 100644
--- a/src/state.c
+++ b/src/state.c
@@ -1,5 +1,6 @@
 #include "vterm_internal.h"
 
+#include <malloc.h>
 #include <stdio.h>
 #include <string.h>
 
@@ -236,7 +237,7 @@ static int on_text(const char bytes[], size_t len, void *user)
   VTermPos oldpos = state->pos;
 
   // We'll have at most len codepoints
-  uint32_t codepoints[len];
+  uint32_t* codepoints = _alloca(len * sizeof(uint32_t));
   int npoints = 0;
   size_t eaten = 0;
 
@@ -313,7 +314,7 @@ static int on_text(const char bytes[], size_t len, void *user)
 
     int width = 0;
 
-    uint32_t chars[glyph_ends - glyph_starts + 1];
+    uint32_t* chars = _alloca((glyph_ends - glyph_starts + 1) * sizeof(uint32_t));
 
     for( ; i < glyph_ends; i++) {
       chars[i - glyph_starts] = codepoints[i];
@@ -512,7 +513,7 @@ static int settermprop_int(VTermState *state, VTermProp prop, int v)
 
 static int settermprop_string(VTermState *state, VTermProp prop, const char *str, size_t len)
 {
-  char strvalue[len+1];
+  char* strvalue = _alloca(len+1);
   strncpy(strvalue, str, len);
   strvalue[len] = 0;
 
-- 
2.16.1.windows.4