version 1.87, 2014/10/13 17:17:45 |
version 1.88, 2014/10/28 13:24:44 |
Line 334 mandoc_escape(const char **end, const char **start, in |
|
Line 334 mandoc_escape(const char **end, const char **start, in |
|
if (1 == *sz && 'c' == **start) |
if (1 == *sz && 'c' == **start) |
gly = ESCAPE_NOSPACE; |
gly = ESCAPE_NOSPACE; |
/* |
/* |
* Unicode escapes are defined in groff as \[uXXXX] |
* Unicode escapes are defined in groff as \[u0000] |
* to \[u10FFFF], where the contained value must be |
* to \[u10FFFF], where the contained value must be |
* a valid Unicode codepoint. Here, however, only |
* a valid Unicode codepoint. Here, however, only |
* check the length and the validity of all digits. |
* check the length and range. |
*/ |
*/ |
else if (*sz > 4 && *sz < 8 && **start == 'u' && |
if (**start != 'u' || *sz < 5 || *sz > 7) |
(int)strspn(*start + 1, "0123456789ABCDEFabcdef") |
break; |
|
if (*sz == 7 && ((*start)[1] != '1' || (*start)[2] != '0')) |
|
break; |
|
if (*sz == 6 && (*start)[1] == '0') |
|
break; |
|
if ((int)strspn(*start + 1, "0123456789ABCDEFabcdef") |
+ 1 == *sz) |
+ 1 == *sz) |
gly = ESCAPE_UNICODE; |
gly = ESCAPE_UNICODE; |
break; |
break; |