From 305673e92312f81178e10e7426bcf0fb793e96ea Mon Sep 17 00:00:00 2001 From: b-r-o-c-k Date: Thu, 1 Mar 2018 22:39:35 -0600 Subject: build/msvc: Add patch for libvterm The patch removes VLAs because MSVC does not support them. --- .../patches/libvterm-Remove-VLAs-for-MSVC.patch | 50 ++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 third-party/patches/libvterm-Remove-VLAs-for-MSVC.patch (limited to 'third-party/patches/libvterm-Remove-VLAs-for-MSVC.patch') diff --git a/third-party/patches/libvterm-Remove-VLAs-for-MSVC.patch b/third-party/patches/libvterm-Remove-VLAs-for-MSVC.patch new file mode 100644 index 0000000000..3fb18351be --- /dev/null +++ b/third-party/patches/libvterm-Remove-VLAs-for-MSVC.patch @@ -0,0 +1,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 + #include + #include + +@@ -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); + 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); + + 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 + -- cgit From afd46b78c5b431065e8439e82ade86672baf9c08 Mon Sep 17 00:00:00 2001 From: b-r-o-c-k Date: Mon, 26 Mar 2018 10:54:44 -0500 Subject: build/msvc: Fix libvterm patch --- third-party/patches/libvterm-Remove-VLAs-for-MSVC.patch | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'third-party/patches/libvterm-Remove-VLAs-for-MSVC.patch') diff --git a/third-party/patches/libvterm-Remove-VLAs-for-MSVC.patch b/third-party/patches/libvterm-Remove-VLAs-for-MSVC.patch index 3fb18351be..e999c0fa9b 100644 --- a/third-party/patches/libvterm-Remove-VLAs-for-MSVC.patch +++ b/third-party/patches/libvterm-Remove-VLAs-for-MSVC.patch @@ -23,7 +23,7 @@ index 84299df..f9aabb3 100644 // We'll have at most len codepoints - uint32_t codepoints[len]; -+ uint32_t* codepoints = _alloca(len); ++ uint32_t* codepoints = _alloca(len * sizeof(uint32_t)); int npoints = 0; size_t eaten = 0; @@ -32,7 +32,7 @@ index 84299df..f9aabb3 100644 int width = 0; - uint32_t chars[glyph_ends - glyph_starts + 1]; -+ uint32_t* chars = _alloca(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]; -- cgit