all messages for Guix-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
blob 878706dc79ed7084c6a2481e61fcb200156cddaa 1742 bytes (raw)
name: gnu/packages/patches/sajson-parse_flags-linking.patch 	 # note: path name is non-authoritative(*)

 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
 
This patch is from the upstream pull request
https://github.com/chadaustin/sajson/pull/54.
It fixes linking with GCC.

diff --git a/include/sajson.h b/include/sajson.h
index 8b4e05a..1bd045b 100644
--- a/include/sajson.h
+++ b/include/sajson.h
@@ -138,12 +138,17 @@ constexpr inline size_t make_element(tag t, size_t value) {
 // header. This trick courtesy of Rich Geldreich's Purple JSON parser.
 template <typename unused = void>
 struct globals_struct {
+    static const unsigned char parse_flags[256];
+};
+typedef globals_struct<> globals;
+
 // clang-format off
 
     // bit 0 (1) - set if: plain ASCII string character
     // bit 1 (2) - set if: whitespace
     // bit 4 (0x10) - set if: 0-9 e E .
-    constexpr static const uint8_t parse_flags[256] = {
+    template <typename unused>
+    const unsigned char globals_struct<unused>::parse_flags[256] = {
      // 0    1    2    3    4    5    6    7      8    9    A    B    C    D    E    F
         0,   0,   0,   0,   0,   0,   0,   0,     0,   2,   2,   0,   0,   2,   0,   0, // 0
         0,   0,   0,   0,   0,   0,   0,   0,     0,   0,   0,   0,   0,   0,   0,   0, // 1
@@ -162,15 +167,13 @@ struct globals_struct {
     };
 
 // clang-format on
-};
-typedef globals_struct<> globals;
 
-constexpr inline bool is_plain_string_character(char c) {
+inline bool is_plain_string_character(char c) {
     // return c >= 0x20 && c <= 0x7f && c != 0x22 && c != 0x5c;
     return (globals::parse_flags[static_cast<unsigned char>(c)] & 1) != 0;
 }
 
-constexpr inline bool is_whitespace(char c) {
+inline bool is_whitespace(char c) {
     // return c == '\r' || c == '\n' || c == '\t' || c == ' ';
     return (globals::parse_flags[static_cast<unsigned char>(c)] & 2) != 0;
 }

debug log:

solving 878706dc79 ...
found 878706dc79 in https://git.savannah.gnu.org/cgit/guix.git

(*) Git path names are given by the tree(s) the blob belongs to.
    Blobs themselves have no identifier aside from the hash of its contents.^

Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/guix.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.