diff options
| author | Shawn Rutledge <shawn.rutledge@qt.io> | 2020-11-03 13:09:31 +0100 | 
|---|---|---|
| committer | Shawn Rutledge <shawn.rutledge@qt.io> | 2020-11-03 20:36:34 +0100 | 
| commit | 488e72cce841c5caeed2c27052be146baf579c3e (patch) | |
| tree | 788ade2d40cf8a75cf9c20d02c6c287638ca7864 /src | |
| parent | dc43061e9abb15bc07eb236f5344c79d27590812 (diff) | |
| download | qtbase-488e72cce841c5caeed2c27052be146baf579c3e.tar.gz | |
Update third-party md4c to version 0.4.6
If you try to parse markdown containing null characters, it should not
crash anymore.
[ChangeLog][Third-Party Code] md4c was updated to 0.4.6.
Pick-to: 5.15
Fixes: QTBUG-87965
Change-Id: I6e0ac6f4ecb41c0836f22c7a6a2d510102c933c0
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
Diffstat (limited to 'src')
| -rw-r--r-- | src/3rdparty/md4c/md4c.c | 217 | ||||
| -rw-r--r-- | src/3rdparty/md4c/md4c.h | 43 | ||||
| -rw-r--r-- | src/3rdparty/md4c/qt_attribution.json | 4 | 
3 files changed, 135 insertions, 129 deletions
diff --git a/src/3rdparty/md4c/md4c.c b/src/3rdparty/md4c/md4c.c index b0ef739b3c..0119e7a55a 100644 --- a/src/3rdparty/md4c/md4c.c +++ b/src/3rdparty/md4c/md4c.c @@ -137,19 +137,19 @@ struct MD_CTX_tag {      /* For resolving of inline spans. */      MD_MARKCHAIN mark_chains[13]; -#define PTR_CHAIN                               ctx->mark_chains[0] -#define TABLECELLBOUNDARIES                     ctx->mark_chains[1] -#define ASTERISK_OPENERS_extraword_mod3_0       ctx->mark_chains[2] -#define ASTERISK_OPENERS_extraword_mod3_1       ctx->mark_chains[3] -#define ASTERISK_OPENERS_extraword_mod3_2       ctx->mark_chains[4] -#define ASTERISK_OPENERS_intraword_mod3_0       ctx->mark_chains[5] -#define ASTERISK_OPENERS_intraword_mod3_1       ctx->mark_chains[6] -#define ASTERISK_OPENERS_intraword_mod3_2       ctx->mark_chains[7] -#define UNDERSCORE_OPENERS                      ctx->mark_chains[8] -#define TILDE_OPENERS_1                         ctx->mark_chains[9] -#define TILDE_OPENERS_2                         ctx->mark_chains[10] -#define BRACKET_OPENERS                         ctx->mark_chains[11] -#define DOLLAR_OPENERS                          ctx->mark_chains[12] +#define PTR_CHAIN                               (ctx->mark_chains[0]) +#define TABLECELLBOUNDARIES                     (ctx->mark_chains[1]) +#define ASTERISK_OPENERS_extraword_mod3_0       (ctx->mark_chains[2]) +#define ASTERISK_OPENERS_extraword_mod3_1       (ctx->mark_chains[3]) +#define ASTERISK_OPENERS_extraword_mod3_2       (ctx->mark_chains[4]) +#define ASTERISK_OPENERS_intraword_mod3_0       (ctx->mark_chains[5]) +#define ASTERISK_OPENERS_intraword_mod3_1       (ctx->mark_chains[6]) +#define ASTERISK_OPENERS_intraword_mod3_2       (ctx->mark_chains[7]) +#define UNDERSCORE_OPENERS                      (ctx->mark_chains[8]) +#define TILDE_OPENERS_1                         (ctx->mark_chains[9]) +#define TILDE_OPENERS_2                         (ctx->mark_chains[10]) +#define BRACKET_OPENERS                         (ctx->mark_chains[11]) +#define DOLLAR_OPENERS                          (ctx->mark_chains[12])  #define OPENERS_CHAIN_FIRST                     2  #define OPENERS_CHAIN_LAST                      12 @@ -273,13 +273,10 @@ struct MD_VERBATIMLINE_tag {  #define CH(off)                 (ctx->text[(off)])  #define STR(off)                (ctx->text + (off)) -/* Check whether the pointer points into ctx->text. */ -#define IS_INPUT_STR(ptr)       (ctx->text <= (ptr)  &&  (ptr) < (ctx->text + ctx->size)) -  /* Character classification.   * Note we assume ASCII compatibility of code points < 128 here. */  #define ISIN_(ch, ch_min, ch_max)       ((ch_min) <= (unsigned)(ch) && (unsigned)(ch) <= (ch_max)) -#define ISANYOF_(ch, palette)           (md_strchr((palette), (ch)) != NULL) +#define ISANYOF_(ch, palette)           ((ch) != _T('\0')  &&  md_strchr((palette), (ch)) != NULL)  #define ISANYOF2_(ch, ch1, ch2)         ((ch) == (ch1) || (ch) == (ch2))  #define ISANYOF3_(ch, ch1, ch2, ch3)    ((ch) == (ch1) || (ch) == (ch2) || (ch) == (ch3))  #define ISASCII_(ch)                    ((unsigned)(ch) <= 127) @@ -550,22 +547,22 @@ struct MD_UNICODE_FOLD_INFO_tag {              R(0x2030,0x2043), R(0x2045,0x2051), R(0x2053,0x205e), R(0x207d,0x207e), R(0x208d,0x208e),              R(0x2308,0x230b), R(0x2329,0x232a), R(0x2768,0x2775), R(0x27c5,0x27c6), R(0x27e6,0x27ef),              R(0x2983,0x2998), R(0x29d8,0x29db), R(0x29fc,0x29fd), R(0x2cf9,0x2cfc), R(0x2cfe,0x2cff), S(0x2d70), -            R(0x2e00,0x2e2e), R(0x2e30,0x2e4f), R(0x3001,0x3003), R(0x3008,0x3011), R(0x3014,0x301f), S(0x3030), -            S(0x303d), S(0x30a0), S(0x30fb), R(0xa4fe,0xa4ff), R(0xa60d,0xa60f), S(0xa673), S(0xa67e), +            R(0x2e00,0x2e2e), R(0x2e30,0x2e4f), S(0x2e52), R(0x3001,0x3003), R(0x3008,0x3011), R(0x3014,0x301f), +            S(0x3030), S(0x303d), S(0x30a0), S(0x30fb), R(0xa4fe,0xa4ff), R(0xa60d,0xa60f), S(0xa673), S(0xa67e),              R(0xa6f2,0xa6f7), R(0xa874,0xa877), R(0xa8ce,0xa8cf), R(0xa8f8,0xa8fa), S(0xa8fc), R(0xa92e,0xa92f),              S(0xa95f), R(0xa9c1,0xa9cd), R(0xa9de,0xa9df), R(0xaa5c,0xaa5f), R(0xaade,0xaadf), R(0xaaf0,0xaaf1),              S(0xabeb), R(0xfd3e,0xfd3f), R(0xfe10,0xfe19), R(0xfe30,0xfe52), R(0xfe54,0xfe61), S(0xfe63), S(0xfe68),              R(0xfe6a,0xfe6b), R(0xff01,0xff03), R(0xff05,0xff0a), R(0xff0c,0xff0f), R(0xff1a,0xff1b),              R(0xff1f,0xff20), R(0xff3b,0xff3d), S(0xff3f), S(0xff5b), S(0xff5d), R(0xff5f,0xff65), R(0x10100,0x10102),              S(0x1039f), S(0x103d0), S(0x1056f), S(0x10857), S(0x1091f), S(0x1093f), R(0x10a50,0x10a58), S(0x10a7f), -            R(0x10af0,0x10af6), R(0x10b39,0x10b3f), R(0x10b99,0x10b9c), R(0x10f55,0x10f59), R(0x11047,0x1104d), -            R(0x110bb,0x110bc), R(0x110be,0x110c1), R(0x11140,0x11143), R(0x11174,0x11175), R(0x111c5,0x111c8), -            S(0x111cd), S(0x111db), R(0x111dd,0x111df), R(0x11238,0x1123d), S(0x112a9), R(0x1144b,0x1144f), -            S(0x1145b), S(0x1145d), S(0x114c6), R(0x115c1,0x115d7), R(0x11641,0x11643), R(0x11660,0x1166c), -            R(0x1173c,0x1173e), S(0x1183b), S(0x119e2), R(0x11a3f,0x11a46), R(0x11a9a,0x11a9c), R(0x11a9e,0x11aa2), -            R(0x11c41,0x11c45), R(0x11c70,0x11c71), R(0x11ef7,0x11ef8), S(0x11fff), R(0x12470,0x12474), -            R(0x16a6e,0x16a6f), S(0x16af5), R(0x16b37,0x16b3b), S(0x16b44), R(0x16e97,0x16e9a), S(0x16fe2), -            S(0x1bc9f), R(0x1da87,0x1da8b), R(0x1e95e,0x1e95f) +            R(0x10af0,0x10af6), R(0x10b39,0x10b3f), R(0x10b99,0x10b9c), S(0x10ead), R(0x10f55,0x10f59), +            R(0x11047,0x1104d), R(0x110bb,0x110bc), R(0x110be,0x110c1), R(0x11140,0x11143), R(0x11174,0x11175), +            R(0x111c5,0x111c8), S(0x111cd), S(0x111db), R(0x111dd,0x111df), R(0x11238,0x1123d), S(0x112a9), +            R(0x1144b,0x1144f), R(0x1145a,0x1145b), S(0x1145d), S(0x114c6), R(0x115c1,0x115d7), R(0x11641,0x11643), +            R(0x11660,0x1166c), R(0x1173c,0x1173e), S(0x1183b), R(0x11944,0x11946), S(0x119e2), R(0x11a3f,0x11a46), +            R(0x11a9a,0x11a9c), R(0x11a9e,0x11aa2), R(0x11c41,0x11c45), R(0x11c70,0x11c71), R(0x11ef7,0x11ef8), +            S(0x11fff), R(0x12470,0x12474), R(0x16a6e,0x16a6f), S(0x16af5), R(0x16b37,0x16b3b), S(0x16b44), +            R(0x16e97,0x16e9a), S(0x16fe2), S(0x1bc9f), R(0x1da87,0x1da8b), R(0x1e95e,0x1e95f)          };  #undef R  #undef S @@ -588,52 +585,56 @@ struct MD_UNICODE_FOLD_INFO_tag {          static const unsigned FOLD_MAP_1[] = {              R(0x0041,0x005a), S(0x00b5), R(0x00c0,0x00d6), R(0x00d8,0x00de), R(0x0100,0x012e), R(0x0132,0x0136),              R(0x0139,0x0147), R(0x014a,0x0176), S(0x0178), R(0x0179,0x017d), S(0x017f), S(0x0181), S(0x0182), -            S(0x0186), S(0x0187), S(0x0189), S(0x018b), S(0x018e), S(0x018f), S(0x0190), S(0x0191), S(0x0193), -            S(0x0194), S(0x0196), S(0x0197), S(0x0198), S(0x019c), S(0x019d), S(0x019f), R(0x01a0,0x01a4), S(0x01a6), -            S(0x01a7), S(0x01a9), S(0x01ac), S(0x01ae), S(0x01af), S(0x01b1), S(0x01b3), S(0x01b7), S(0x01b8), -            S(0x01bc), S(0x01c4), S(0x01c5), S(0x01c7), S(0x01c8), S(0x01ca), R(0x01cb,0x01db), R(0x01de,0x01ee), -            S(0x01f1), S(0x01f2), S(0x01f6), S(0x01f7), R(0x01f8,0x021e), S(0x0220), R(0x0222,0x0232), S(0x023a), -            S(0x023b), S(0x023d), S(0x023e), S(0x0241), S(0x0243), S(0x0244), S(0x0245), R(0x0246,0x024e), S(0x0345), -            S(0x0370), S(0x0376), S(0x037f), S(0x0386), R(0x0388,0x038a), S(0x038c), S(0x038e), R(0x0391,0x03a1), -            R(0x03a3,0x03ab), S(0x03c2), S(0x03cf), S(0x03d0), S(0x03d1), S(0x03d5), S(0x03d6), R(0x03d8,0x03ee), -            S(0x03f0), S(0x03f1), S(0x03f4), S(0x03f5), S(0x03f7), S(0x03f9), S(0x03fa), R(0x03fd,0x03ff), -            R(0x0400,0x040f), R(0x0410,0x042f), R(0x0460,0x0480), R(0x048a,0x04be), S(0x04c0), R(0x04c1,0x04cd), -            R(0x04d0,0x052e), R(0x0531,0x0556), R(0x10a0,0x10c5), S(0x10c7), S(0x10cd), R(0x13f8,0x13fd), S(0x1c80), -            S(0x1c81), S(0x1c82), S(0x1c83), S(0x1c85), S(0x1c86), S(0x1c87), S(0x1c88), R(0x1c90,0x1cba), +            S(0x0184), S(0x0186), S(0x0187), S(0x0189), S(0x018a), S(0x018b), S(0x018e), S(0x018f), S(0x0190), +            S(0x0191), S(0x0193), S(0x0194), S(0x0196), S(0x0197), S(0x0198), S(0x019c), S(0x019d), S(0x019f), +            R(0x01a0,0x01a4), S(0x01a6), S(0x01a7), S(0x01a9), S(0x01ac), S(0x01ae), S(0x01af), S(0x01b1), S(0x01b2), +            S(0x01b3), S(0x01b5), S(0x01b7), S(0x01b8), S(0x01bc), S(0x01c4), S(0x01c5), S(0x01c7), S(0x01c8), +            S(0x01ca), R(0x01cb,0x01db), R(0x01de,0x01ee), S(0x01f1), S(0x01f2), S(0x01f4), S(0x01f6), S(0x01f7), +            R(0x01f8,0x021e), S(0x0220), R(0x0222,0x0232), S(0x023a), S(0x023b), S(0x023d), S(0x023e), S(0x0241), +            S(0x0243), S(0x0244), S(0x0245), R(0x0246,0x024e), S(0x0345), S(0x0370), S(0x0372), S(0x0376), S(0x037f), +            S(0x0386), R(0x0388,0x038a), S(0x038c), S(0x038e), S(0x038f), R(0x0391,0x03a1), R(0x03a3,0x03ab), +            S(0x03c2), S(0x03cf), S(0x03d0), S(0x03d1), S(0x03d5), S(0x03d6), R(0x03d8,0x03ee), S(0x03f0), S(0x03f1), +            S(0x03f4), S(0x03f5), S(0x03f7), S(0x03f9), S(0x03fa), R(0x03fd,0x03ff), R(0x0400,0x040f), +            R(0x0410,0x042f), R(0x0460,0x0480), R(0x048a,0x04be), S(0x04c0), R(0x04c1,0x04cd), R(0x04d0,0x052e), +            R(0x0531,0x0556), R(0x10a0,0x10c5), S(0x10c7), S(0x10cd), R(0x13f8,0x13fd), S(0x1c80), S(0x1c81), +            S(0x1c82), S(0x1c83), S(0x1c84), S(0x1c85), S(0x1c86), S(0x1c87), S(0x1c88), R(0x1c90,0x1cba),              R(0x1cbd,0x1cbf), R(0x1e00,0x1e94), S(0x1e9b), R(0x1ea0,0x1efe), R(0x1f08,0x1f0f), R(0x1f18,0x1f1d),              R(0x1f28,0x1f2f), R(0x1f38,0x1f3f), R(0x1f48,0x1f4d), S(0x1f59), S(0x1f5b), S(0x1f5d), S(0x1f5f), -            R(0x1f68,0x1f6f), S(0x1fb8), S(0x1fba), S(0x1fbe), R(0x1fc8,0x1fcb), S(0x1fd8), S(0x1fda), S(0x1fe8), -            S(0x1fea), S(0x1fec), S(0x1ff8), S(0x1ffa), S(0x2126), S(0x212a), S(0x212b), S(0x2132), R(0x2160,0x216f), -            S(0x2183), R(0x24b6,0x24cf), R(0x2c00,0x2c2e), S(0x2c60), S(0x2c62), S(0x2c63), S(0x2c64), -            R(0x2c67,0x2c6b), S(0x2c6d), S(0x2c6e), S(0x2c6f), S(0x2c70), S(0x2c72), S(0x2c75), S(0x2c7e), -            R(0x2c80,0x2ce2), S(0x2ceb), S(0x2cf2), R(0xa640,0xa66c), R(0xa680,0xa69a), R(0xa722,0xa72e), -            R(0xa732,0xa76e), S(0xa779), S(0xa77d), R(0xa77e,0xa786), S(0xa78b), S(0xa78d), S(0xa790), +            R(0x1f68,0x1f6f), S(0x1fb8), S(0x1fb9), S(0x1fba), S(0x1fbb), S(0x1fbe), R(0x1fc8,0x1fcb), S(0x1fd8), +            S(0x1fd9), S(0x1fda), S(0x1fdb), S(0x1fe8), S(0x1fe9), S(0x1fea), S(0x1feb), S(0x1fec), S(0x1ff8), +            S(0x1ff9), S(0x1ffa), S(0x1ffb), S(0x2126), S(0x212a), S(0x212b), S(0x2132), R(0x2160,0x216f), S(0x2183), +            R(0x24b6,0x24cf), R(0x2c00,0x2c2e), S(0x2c60), S(0x2c62), S(0x2c63), S(0x2c64), R(0x2c67,0x2c6b), +            S(0x2c6d), S(0x2c6e), S(0x2c6f), S(0x2c70), S(0x2c72), S(0x2c75), S(0x2c7e), S(0x2c7f), R(0x2c80,0x2ce2), +            S(0x2ceb), S(0x2ced), S(0x2cf2), R(0xa640,0xa66c), R(0xa680,0xa69a), R(0xa722,0xa72e), R(0xa732,0xa76e), +            S(0xa779), S(0xa77b), S(0xa77d), R(0xa77e,0xa786), S(0xa78b), S(0xa78d), S(0xa790), S(0xa792),              R(0xa796,0xa7a8), S(0xa7aa), S(0xa7ab), S(0xa7ac), S(0xa7ad), S(0xa7ae), S(0xa7b0), S(0xa7b1), S(0xa7b2), -            S(0xa7b3), R(0xa7b4,0xa7be), S(0xa7c2), S(0xa7c4), S(0xa7c5), S(0xa7c6), R(0xab70,0xabbf), -            R(0xff21,0xff3a), R(0x10400,0x10427), R(0x104b0,0x104d3), R(0x10c80,0x10cb2), R(0x118a0,0x118bf), -            R(0x16e40,0x16e5f), R(0x1e900,0x1e921) +            S(0xa7b3), R(0xa7b4,0xa7be), S(0xa7c2), S(0xa7c4), S(0xa7c5), S(0xa7c6), S(0xa7c7), S(0xa7c9), S(0xa7f5), +            R(0xab70,0xabbf), R(0xff21,0xff3a), R(0x10400,0x10427), R(0x104b0,0x104d3), R(0x10c80,0x10cb2), +            R(0x118a0,0x118bf), R(0x16e40,0x16e5f), R(0x1e900,0x1e921)          };          static const unsigned FOLD_MAP_1_DATA[] = {              0x0061, 0x007a, 0x03bc, 0x00e0, 0x00f6, 0x00f8, 0x00fe, 0x0101, 0x012f, 0x0133, 0x0137, 0x013a, 0x0148, -            0x014b, 0x0177, 0x00ff, 0x017a, 0x017e, 0x0073, 0x0253, 0x0183, 0x0254, 0x0188, 0x0256, 0x018c, 0x01dd, -            0x0259, 0x025b, 0x0192, 0x0260, 0x0263, 0x0269, 0x0268, 0x0199, 0x026f, 0x0272, 0x0275, 0x01a1, 0x01a5, -            0x0280, 0x01a8, 0x0283, 0x01ad, 0x0288, 0x01b0, 0x028a, 0x01b4, 0x0292, 0x01b9, 0x01bd, 0x01c6, 0x01c6, -            0x01c9, 0x01c9, 0x01cc, 0x01cc, 0x01dc, 0x01df, 0x01ef, 0x01f3, 0x01f3, 0x0195, 0x01bf, 0x01f9, 0x021f, -            0x019e, 0x0223, 0x0233, 0x2c65, 0x023c, 0x019a, 0x2c66, 0x0242, 0x0180, 0x0289, 0x028c, 0x0247, 0x024f, -            0x03b9, 0x0371, 0x0377, 0x03f3, 0x03ac, 0x03ad, 0x03af, 0x03cc, 0x03cd, 0x03b1, 0x03c1, 0x03c3, 0x03cb, -            0x03c3, 0x03d7, 0x03b2, 0x03b8, 0x03c6, 0x03c0, 0x03d9, 0x03ef, 0x03ba, 0x03c1, 0x03b8, 0x03b5, 0x03f8, -            0x03f2, 0x03fb, 0x037b, 0x037d, 0x0450, 0x045f, 0x0430, 0x044f, 0x0461, 0x0481, 0x048b, 0x04bf, 0x04cf, -            0x04c2, 0x04ce, 0x04d1, 0x052f, 0x0561, 0x0586, 0x2d00, 0x2d25, 0x2d27, 0x2d2d, 0x13f0, 0x13f5, 0x0432, -            0x0434, 0x043e, 0x0441, 0x0442, 0x044a, 0x0463, 0xa64b, 0x10d0, 0x10fa, 0x10fd, 0x10ff, 0x1e01, 0x1e95, -            0x1e61, 0x1ea1, 0x1eff, 0x1f00, 0x1f07, 0x1f10, 0x1f15, 0x1f20, 0x1f27, 0x1f30, 0x1f37, 0x1f40, 0x1f45, -            0x1f51, 0x1f53, 0x1f55, 0x1f57, 0x1f60, 0x1f67, 0x1fb0, 0x1f70, 0x03b9, 0x1f72, 0x1f75, 0x1fd0, 0x1f76, -            0x1fe0, 0x1f7a, 0x1fe5, 0x1f78, 0x1f7c, 0x03c9, 0x006b, 0x00e5, 0x214e, 0x2170, 0x217f, 0x2184, 0x24d0, -            0x24e9, 0x2c30, 0x2c5e, 0x2c61, 0x026b, 0x1d7d, 0x027d, 0x2c68, 0x2c6c, 0x0251, 0x0271, 0x0250, 0x0252, -            0x2c73, 0x2c76, 0x023f, 0x2c81, 0x2ce3, 0x2cec, 0x2cf3, 0xa641, 0xa66d, 0xa681, 0xa69b, 0xa723, 0xa72f, -            0xa733, 0xa76f, 0xa77a, 0x1d79, 0xa77f, 0xa787, 0xa78c, 0x0265, 0xa791, 0xa797, 0xa7a9, 0x0266, 0x025c, -            0x0261, 0x026c, 0x026a, 0x029e, 0x0287, 0x029d, 0xab53, 0xa7b5, 0xa7bf, 0xa7c3, 0xa794, 0x0282, 0x1d8e, -            0x13a0, 0x13ef, 0xff41, 0xff5a, 0x10428, 0x1044f, 0x104d8, 0x104fb, 0x10cc0, 0x10cf2, 0x118c0, 0x118df, -            0x16e60, 0x16e7f, 0x1e922, 0x1e943 +            0x014b, 0x0177, 0x00ff, 0x017a, 0x017e, 0x0073, 0x0253, 0x0183, 0x0185, 0x0254, 0x0188, 0x0256, 0x0257, +            0x018c, 0x01dd, 0x0259, 0x025b, 0x0192, 0x0260, 0x0263, 0x0269, 0x0268, 0x0199, 0x026f, 0x0272, 0x0275, +            0x01a1, 0x01a5, 0x0280, 0x01a8, 0x0283, 0x01ad, 0x0288, 0x01b0, 0x028a, 0x028b, 0x01b4, 0x01b6, 0x0292, +            0x01b9, 0x01bd, 0x01c6, 0x01c6, 0x01c9, 0x01c9, 0x01cc, 0x01cc, 0x01dc, 0x01df, 0x01ef, 0x01f3, 0x01f3, +            0x01f5, 0x0195, 0x01bf, 0x01f9, 0x021f, 0x019e, 0x0223, 0x0233, 0x2c65, 0x023c, 0x019a, 0x2c66, 0x0242, +            0x0180, 0x0289, 0x028c, 0x0247, 0x024f, 0x03b9, 0x0371, 0x0373, 0x0377, 0x03f3, 0x03ac, 0x03ad, 0x03af, +            0x03cc, 0x03cd, 0x03ce, 0x03b1, 0x03c1, 0x03c3, 0x03cb, 0x03c3, 0x03d7, 0x03b2, 0x03b8, 0x03c6, 0x03c0, +            0x03d9, 0x03ef, 0x03ba, 0x03c1, 0x03b8, 0x03b5, 0x03f8, 0x03f2, 0x03fb, 0x037b, 0x037d, 0x0450, 0x045f, +            0x0430, 0x044f, 0x0461, 0x0481, 0x048b, 0x04bf, 0x04cf, 0x04c2, 0x04ce, 0x04d1, 0x052f, 0x0561, 0x0586, +            0x2d00, 0x2d25, 0x2d27, 0x2d2d, 0x13f0, 0x13f5, 0x0432, 0x0434, 0x043e, 0x0441, 0x0442, 0x0442, 0x044a, +            0x0463, 0xa64b, 0x10d0, 0x10fa, 0x10fd, 0x10ff, 0x1e01, 0x1e95, 0x1e61, 0x1ea1, 0x1eff, 0x1f00, 0x1f07, +            0x1f10, 0x1f15, 0x1f20, 0x1f27, 0x1f30, 0x1f37, 0x1f40, 0x1f45, 0x1f51, 0x1f53, 0x1f55, 0x1f57, 0x1f60, +            0x1f67, 0x1fb0, 0x1fb1, 0x1f70, 0x1f71, 0x03b9, 0x1f72, 0x1f75, 0x1fd0, 0x1fd1, 0x1f76, 0x1f77, 0x1fe0, +            0x1fe1, 0x1f7a, 0x1f7b, 0x1fe5, 0x1f78, 0x1f79, 0x1f7c, 0x1f7d, 0x03c9, 0x006b, 0x00e5, 0x214e, 0x2170, +            0x217f, 0x2184, 0x24d0, 0x24e9, 0x2c30, 0x2c5e, 0x2c61, 0x026b, 0x1d7d, 0x027d, 0x2c68, 0x2c6c, 0x0251, +            0x0271, 0x0250, 0x0252, 0x2c73, 0x2c76, 0x023f, 0x0240, 0x2c81, 0x2ce3, 0x2cec, 0x2cee, 0x2cf3, 0xa641, +            0xa66d, 0xa681, 0xa69b, 0xa723, 0xa72f, 0xa733, 0xa76f, 0xa77a, 0xa77c, 0x1d79, 0xa77f, 0xa787, 0xa78c, +            0x0265, 0xa791, 0xa793, 0xa797, 0xa7a9, 0x0266, 0x025c, 0x0261, 0x026c, 0x026a, 0x029e, 0x0287, 0x029d, +            0xab53, 0xa7b5, 0xa7bf, 0xa7c3, 0xa794, 0x0282, 0x1d8e, 0xa7c8, 0xa7ca, 0xa7f6, 0x13a0, 0x13ef, 0xff41, +            0xff5a, 0x10428, 0x1044f, 0x104d8, 0x104fb, 0x10cc0, 0x10cf2, 0x118c0, 0x118df, 0x16e60, 0x16e7f, 0x1e922, +            0x1e943          };          static const unsigned FOLD_MAP_2[] = {              S(0x00df), S(0x0130), S(0x0149), S(0x01f0), S(0x0587), S(0x1e96), S(0x1e97), S(0x1e98), S(0x1e99), @@ -1495,6 +1496,8 @@ struct MD_REF_DEF_tag {      SZ title_size;      OFF dest_beg;      OFF dest_end; +    unsigned char label_needs_free : 1; +    unsigned char title_needs_free : 1;  };  /* Label equivalence is quite complicated with regards to whitespace and case @@ -1574,8 +1577,8 @@ md_link_label_cmp(const CHAR* a_label, SZ a_size, const CHAR* b_label, SZ b_size      OFF b_off;      int a_reached_end = FALSE;      int b_reached_end = FALSE; -    MD_UNICODE_FOLD_INFO a_fi = { 0 }; -    MD_UNICODE_FOLD_INFO b_fi = { 0 }; +    MD_UNICODE_FOLD_INFO a_fi = { { 0 }, 0 }; +    MD_UNICODE_FOLD_INFO b_fi = { { 0 }, 0 };      OFF a_fi_off = 0;      OFF b_fi_off = 0;      int cmp; @@ -2074,20 +2077,18 @@ md_is_link_reference_definition(MD_CTX* ctx, const MD_LINE* lines, int n_lines)      OFF label_contents_beg;      OFF label_contents_end;      int label_contents_line_index = -1; -    int label_is_multiline; -    CHAR* label = NULL; -    SZ label_size; +    int label_is_multiline = FALSE;      OFF dest_contents_beg;      OFF dest_contents_end;      OFF title_contents_beg;      OFF title_contents_end;      int title_contents_line_index; -    int title_is_multiline; +    int title_is_multiline = FALSE;      OFF off;      int line_index = 0;      int tmp_line_index; -    MD_REF_DEF* def; -    int ret; +    MD_REF_DEF* def = NULL; +    int ret = 0;      /* Link label. */      if(!md_is_link_label(ctx, lines, n_lines, lines[0].beg, @@ -2138,17 +2139,7 @@ md_is_link_reference_definition(MD_CTX* ctx, const MD_LINE* lines, int n_lines)      if(off < lines[line_index].end)          return FALSE; -    /* Construct label. */ -    if(!label_is_multiline) { -        label = (CHAR*) STR(label_contents_beg); -        label_size = label_contents_end - label_contents_beg; -    } else { -        MD_CHECK(md_merge_lines_alloc(ctx, label_contents_beg, label_contents_end, -                    lines + label_contents_line_index, n_lines - label_contents_line_index, -                    _T(' '), &label, &label_size)); -    } - -    /* Store the reference definition. */ +    /* So, it _is_ a reference definition. Remember it. */      if(ctx->n_ref_defs >= ctx->alloc_ref_defs) {          MD_REF_DEF* new_defs; @@ -2163,36 +2154,42 @@ md_is_link_reference_definition(MD_CTX* ctx, const MD_LINE* lines, int n_lines)          ctx->ref_defs = new_defs;      } -      def = &ctx->ref_defs[ctx->n_ref_defs];      memset(def, 0, sizeof(MD_REF_DEF)); -    def->label = label; -    def->label_size = label_size; - -    def->dest_beg = dest_contents_beg; -    def->dest_end = dest_contents_end; - -    if(title_contents_beg >= title_contents_end) { -        def->title = NULL; -        def->title_size = 0; -    } else if(!title_is_multiline) { -        def->title = (CHAR*) STR(title_contents_beg); -        def->title_size = title_contents_end - title_contents_beg; +    if(label_is_multiline) { +        MD_CHECK(md_merge_lines_alloc(ctx, label_contents_beg, label_contents_end, +                    lines + label_contents_line_index, n_lines - label_contents_line_index, +                    _T(' '), &def->label, &def->label_size)); +        def->label_needs_free = TRUE;      } else { +        def->label = (CHAR*) STR(label_contents_beg); +        def->label_size = label_contents_end - label_contents_beg; +    } + +    if(title_is_multiline) {          MD_CHECK(md_merge_lines_alloc(ctx, title_contents_beg, title_contents_end,                      lines + title_contents_line_index, n_lines - title_contents_line_index,                      _T('\n'), &def->title, &def->title_size)); +        def->title_needs_free = TRUE; +    } else { +        def->title = (CHAR*) STR(title_contents_beg); +        def->title_size = title_contents_end - title_contents_beg;      } +    def->dest_beg = dest_contents_beg; +    def->dest_end = dest_contents_end; +      /* Success. */      ctx->n_ref_defs++;      return line_index + 1;  abort:      /* Failure. */ -    if(!IS_INPUT_STR(label)) -        free(label); +    if(def != NULL  &&  def->label_needs_free) +        free(def->label); +    if(def != NULL  &&  def->title_needs_free) +        free(def->title);      return ret;  } @@ -2241,7 +2238,7 @@ md_is_link_reference(MD_CTX* ctx, const MD_LINE* lines, int n_lines,          attr->title_needs_free = FALSE;      } -    if(!IS_INPUT_STR(label)) +    if(beg_line != end_line)          free(label);      ret = (def != NULL); @@ -2355,9 +2352,9 @@ md_free_ref_defs(MD_CTX* ctx)      for(i = 0; i < ctx->n_ref_defs; i++) {          MD_REF_DEF* def = &ctx->ref_defs[i]; -        if(!IS_INPUT_STR(def->label)) +        if(def->label_needs_free)              free(def->label); -        if(!IS_INPUT_STR(def->title)) +        if(def->title_needs_free)              free(def->title);      } @@ -2728,7 +2725,7 @@ md_build_mark_char_map(MD_CTX* ctx)      }  } -/* We limit code span marks to lower then 32 backticks. This solves the +/* We limit code span marks to lower than 32 backticks. This solves the   * pathologic case of too many openers, each of different length: Their   * resolving would be then O(n^2). */  #define CODESPAN_MARK_MAXLEN    32 @@ -3447,7 +3444,7 @@ md_resolve_links(MD_CTX* ctx, const MD_LINE* lines, int n_lines)              is_link = TRUE; -            /* We don't allow destination to be longer then 100 characters. +            /* We don't allow destination to be longer than 100 characters.               * Lets scan to see whether there is '|'. (If not then the whole               * wiki-link has to be below the 100 characters.) */              delim_index = opener_index + 1; @@ -3550,7 +3547,7 @@ md_resolve_links(MD_CTX* ctx, const MD_LINE* lines, int n_lines)                          if((mark->flags & (MD_MARK_OPENER | MD_MARK_RESOLVED)) == (MD_MARK_OPENER | MD_MARK_RESOLVED)) {                              if(ctx->marks[mark->next].beg >= inline_link_end) {                                  /* Cancel the link status. */ -                                if(!IS_INPUT_STR(attr.title)) +                                if(attr.title_needs_free)                                      free(attr.title);                                  is_link = FALSE;                                  break; @@ -4582,9 +4579,9 @@ md_process_verbatim_block_contents(MD_CTX* ctx, MD_TEXTTYPE text_type, const MD_          MD_ASSERT(indent >= 0);          /* Output code indentation. */ -        while(indent > (int) SIZEOF_ARRAY(indent_chunk_str)) { +        while(indent > (int) indent_chunk_size) {              MD_TEXT(text_type, indent_chunk_str, indent_chunk_size); -            indent -= SIZEOF_ARRAY(indent_chunk_str); +            indent -= indent_chunk_size;          }          if(indent > 0)              MD_TEXT(text_type, indent_chunk_str, indent); @@ -5811,7 +5808,7 @@ md_analyze_line(MD_CTX* ctx, OFF beg, OFF* p_end,      #if 1              /* This is 2nd half of the hack. If the flag is set (that is there               * were 2nd blank line at the start of the list item) and we would also -             * belonging to such list item, then interrupt the list. */ +             * belonging to such list item, than interrupt the list. */              ctx->last_line_has_list_loosening_effect = FALSE;              if(ctx->last_list_item_starts_with_two_blank_lines) {                  if(n_parents > 0  &&  ctx->containers[n_parents-1].ch != _T('>')  && diff --git a/src/3rdparty/md4c/md4c.h b/src/3rdparty/md4c/md4c.h index c2c4311f50..8bba71242d 100644 --- a/src/3rdparty/md4c/md4c.h +++ b/src/3rdparty/md4c/md4c.h @@ -23,15 +23,15 @@   * IN THE SOFTWARE.   */ -#ifndef MD4C_MARKDOWN_H -#define MD4C_MARKDOWN_H +#ifndef MD4C_H +#define MD4C_H  #ifdef __cplusplus      extern "C" {  #endif  #if defined MD4C_USE_UTF16 -    /* Magic to support UTF-16. Not that in order to use it, you have to define +    /* Magic to support UTF-16. Note that in order to use it, you have to define       * the macro MD4C_USE_UTF16 both when building MD4C as well as when       * including this header in your code. */      #ifdef _WIN32 @@ -119,7 +119,7 @@ typedef enum MD_SPANTYPE {       * Detail: Structure MD_SPAN_IMG_DETAIL.       * Note: Image text can contain nested spans and even nested images.       * If rendered into ALT attribute of HTML <IMG> tag, it's responsibility -     * of the renderer to deal with it. +     * of the parser to deal with it.       */      MD_SPAN_IMG, @@ -171,7 +171,7 @@ typedef enum MD_TEXTTYPE {       * (c) Hexadecimal entity, e.g. ካ       *       * As MD4C is mostly encoding agnostic, application gets the verbatim -     * entity text into the MD_RENDERER::text_callback(). */ +     * entity text into the MD_PARSER::text_callback(). */      MD_TEXT_ENTITY,      /* Text in a code block (inside MD_BLOCK_CODE) or inlined code (`code`). @@ -206,8 +206,13 @@ typedef enum MD_ALIGN {   * propagated within various detailed structures, but which still may contain   * string portions of different types like e.g. entities.   * - * So, for example, lets consider an image has a title attribute string - * set to "foo " bar". (Note the string size is 14.) + * So, for example, lets consider this image: + * + *      + * + * The image alt text is propagated as a normal text via the MD_PARSER::text() + * callback. However, the image title ('foo " bar') is propagated as + * MD_ATTRIBUTE in MD_SPAN_IMG_DETAIL::title.   *   * Then the attribute MD_SPAN_IMG_DETAIL::title shall provide the following:   *  -- [0]: "foo "   (substr_types[0] == MD_TEXT_NORMAL; substr_offsets[0] == 0) @@ -215,10 +220,12 @@ typedef enum MD_ALIGN {   *  -- [2]: " bar"   (substr_types[2] == MD_TEXT_NORMAL; substr_offsets[2] == 10)   *  -- [3]: (n/a)    (n/a                              ; substr_offsets[3] == 14)   * - * Note that these conditions are guaranteed: + * Note that these invariants are always guaranteed:   *  -- substr_offsets[0] == 0   *  -- substr_offsets[LAST+1] == size - *  -- Only MD_TEXT_NORMAL, MD_TEXT_ENTITY, MD_TEXT_NULLCHAR substrings can appear. + *  -- Currently, only MD_TEXT_NORMAL, MD_TEXT_ENTITY, MD_TEXT_NULLCHAR + *     substrings can appear. This could change only of the specification + *     changes.   */  typedef struct MD_ATTRIBUTE {      const MD_CHAR* text; @@ -284,7 +291,7 @@ typedef struct MD_SPAN_WIKILINK {  /* Flags specifying extensions/deviations from CommonMark specification.   * - * By default (when MD_RENDERER::flags == 0), we follow CommonMark specification. + * By default (when MD_PARSER::flags == 0), we follow CommonMark specification.   * The following flags may allow some extensions or deviations from it.   */  #define MD_FLAG_COLLAPSEWHITESPACE          0x0001  /* In MD_TEXT_NORMAL, collapse non-trivial whitespace into single ' ' */ @@ -317,7 +324,7 @@ typedef struct MD_SPAN_WIKILINK {  #define MD_DIALECT_COMMONMARK               0  #define MD_DIALECT_GITHUB                   (MD_FLAG_PERMISSIVEAUTOLINKS | MD_FLAG_TABLES | MD_FLAG_STRIKETHROUGH | MD_FLAG_TASKLISTS) -/* Renderer structure. +/* Parser structure.   */  typedef struct MD_PARSER {      /* Reserved. Set to zero. @@ -338,9 +345,10 @@ typedef struct MD_PARSER {       *       * Note any strings provided to the callbacks as their arguments or as       * members of any detail structure are generally not zero-terminated. -     * Application has take the respective size information into account. +     * Application has to take the respective size information into account.       * -     * Callbacks may abort further parsing of the document by returning non-zero. +     * Any rendering callback may abort further parsing of the document by +     * returning non-zero.       */      int (*enter_block)(MD_BLOCKTYPE /*type*/, void* /*detail*/, void* /*userdata*/);      int (*leave_block)(MD_BLOCKTYPE /*type*/, void* /*detail*/, void* /*userdata*/); @@ -365,18 +373,19 @@ typedef struct MD_PARSER {  } MD_PARSER; -/* For backward compatibility. Do not use in new code. */ +/* For backward compatibility. Do not use in new code. + */  typedef MD_PARSER MD_RENDERER;  /* Parse the Markdown document stored in the string 'text' of size 'size'. - * The renderer provides callbacks to be called during the parsing so the + * The parser provides callbacks to be called during the parsing so the   * caller can render the document on the screen or convert the Markdown   * to another format.   *   * Zero is returned on success. If a runtime error occurs (e.g. a memory   * fails), -1 is returned. If the processing is aborted due any callback - * returning non-zero, md_parse() the return value of the callback is returned. + * returning non-zero, the return value of the callback is returned.   */  int md_parse(const MD_CHAR* text, MD_SIZE size, const MD_PARSER* parser, void* userdata); @@ -385,4 +394,4 @@ int md_parse(const MD_CHAR* text, MD_SIZE size, const MD_PARSER* parser, void* u      }  /* extern "C" { */  #endif -#endif  /* MD4C_MARKDOWN_H */ +#endif  /* MD4C_H */ diff --git a/src/3rdparty/md4c/qt_attribution.json b/src/3rdparty/md4c/qt_attribution.json index c574b97711..024cf5ed80 100644 --- a/src/3rdparty/md4c/qt_attribution.json +++ b/src/3rdparty/md4c/qt_attribution.json @@ -9,7 +9,7 @@      "License": "MIT License",      "LicenseId": "MIT",      "LicenseFile": "LICENSE.md", -    "Version": "0.4.3", -    "DownloadLocation": "https://github.com/mity/md4c/releases/tag/release-0.4.3", +    "Version": "0.4.6", +    "DownloadLocation": "https://github.com/mity/md4c/releases/tag/release-0.4.6",      "Copyright": "Copyright © 2016-2020 Martin Mitáš"  }  | 
