summaryrefslogtreecommitdiff
path: root/Build/source/texk/web2c
diff options
context:
space:
mode:
authorLuigi Scarso <luigi.scarso@gmail.com>2019-01-20 23:58:29 +0000
committerLuigi Scarso <luigi.scarso@gmail.com>2019-01-20 23:58:29 +0000
commitbc3a1be2b5557293ac1a95216287279df82b05ab (patch)
treef216eff7b5a3537e803dc9c0b8255b31d8adb131 /Build/source/texk/web2c
parent31268c900d5c42ececed0b7e5e1a918e387a5ef0 (diff)
luatex: patches for pplib. Small cleanup of the code.
git-svn-id: svn://tug.org/texlive/trunk@49776 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Build/source/texk/web2c')
-rw-r--r--Build/source/texk/web2c/luatexdir/NEWS8
-rw-r--r--Build/source/texk/web2c/luatexdir/image/epdf.h3
-rw-r--r--Build/source/texk/web2c/luatexdir/lua/luainit.c18
-rw-r--r--Build/source/texk/web2c/luatexdir/lua/mplibstuff.c2
-rw-r--r--Build/source/texk/web2c/luatexdir/luaffi/ffi.c2
-rw-r--r--Build/source/texk/web2c/luatexdir/luaffi/ffi.h2
-rw-r--r--Build/source/texk/web2c/luatexdir/luapplib/ppconf.h13
-rw-r--r--Build/source/texk/web2c/luatexdir/luapplib/ppload.c165
-rw-r--r--Build/source/texk/web2c/luatexdir/luapplib/util/utilarm.h18
-rw-r--r--Build/source/texk/web2c/luatexdir/luapplib/util/utilfpred.c5
-rw-r--r--Build/source/texk/web2c/luatexdir/luatex_svnversion.h2
-rw-r--r--Build/source/texk/web2c/luatexdir/tex/errors.c3
12 files changed, 188 insertions, 53 deletions
diff --git a/Build/source/texk/web2c/luatexdir/NEWS b/Build/source/texk/web2c/luatexdir/NEWS
index dfa8fa8c68d..f590c848a5c 100644
--- a/Build/source/texk/web2c/luatexdir/NEWS
+++ b/Build/source/texk/web2c/luatexdir/NEWS
@@ -1,4 +1,12 @@
==============================================================
+LuaTeX 1.09.2 2019-01-19
+==============================================================
+
+This is a transitional release to LuaTeX 1.10 for TeX Live 2019
+
+
+
+==============================================================
LuaTeX 1.09 2018-10-23
==============================================================
diff --git a/Build/source/texk/web2c/luatexdir/image/epdf.h b/Build/source/texk/web2c/luatexdir/image/epdf.h
index d0cd7f79ee0..fa66eeb4d23 100644
--- a/Build/source/texk/web2c/luatexdir/image/epdf.h
+++ b/Build/source/texk/web2c/luatexdir/image/epdf.h
@@ -37,6 +37,7 @@
# include <stdio.h>
# include <string.h>
# include <kpathsea/c-ctype.h>
+# include <kpathsea/simpletypes.h>
# include <sys/stat.h>
# include <dirent.h>
@@ -50,7 +51,7 @@ typedef enum { FE_FAIL, FE_RETURN_NULL } file_error_mode;
/* the following code is extremly ugly but needed for including web2c/config.h */
-typedef const char *const_string; /* including kpathsea/types.h doesn't work on some systems */
+/*typedef const char *const_string;*/ /* including kpathsea/types.h doesn't work on some systems */
# define KPATHSEA_CONFIG_H /* avoid including other kpathsea header files */
diff --git a/Build/source/texk/web2c/luatexdir/lua/luainit.c b/Build/source/texk/web2c/luatexdir/lua/luainit.c
index 60c654aa0a0..7abf8c8ee5e 100644
--- a/Build/source/texk/web2c/luatexdir/lua/luainit.c
+++ b/Build/source/texk/web2c/luatexdir/lua/luainit.c
@@ -2,7 +2,7 @@
luainit.w
-Copyright 2006-2018 Taco Hoekwater <taco@@luatex.org>
+Copyright 2006-2019 Taco Hoekwater <taco@@luatex.org>
This file is part of LuaTeX.
@@ -425,7 +425,7 @@ static void parse_options(int ac, char **av)
"the terms of the GNU General Public License, version 2 or (at your option)\n"
"any later version. For more information about these matters, see the file\n"
"named COPYING and the LuaTeX source.\n\n"
- "LuaTeX is Copyright 2018 Taco Hoekwater and the LuaTeX Team.\n");
+ "LuaTeX is Copyright 2019 Taco Hoekwater and the LuaTeX Team.\n");
/* *INDENT-ON* */
uexit(0);
} else if (ARGUMENT_IS("credits")) {
@@ -926,8 +926,11 @@ void lua_initialize(int ac, char **av)
#if defined(WIN32) || defined(__MINGW32__) || defined(__CYGWIN__)
mk_suffixlist();
#endif
- /*tex Must be initialized before options are parsed. */
+ /*tex Must be initialized before options are parsed and might get adapted by config table. */
interactionoption = 4;
+ filelineerrorstylep = false;
+ haltonerrorp = false;
+ tracefilenames = 1;
dump_name = NULL;
/*tex
In the next option 0 means ``disable Synchronize TeXnology''. The
@@ -1075,7 +1078,6 @@ void lua_initialize(int ac, char **av)
}
kpse_init = -1;
get_lua_boolean("texconfig", "kpse_init", &kpse_init);
-
if (kpse_init != 0) {
/*tex re-enable loading of texmf.cnf values, see luatex.ch */
luainit = 0;
@@ -1083,14 +1085,16 @@ void lua_initialize(int ac, char **av)
kpse_init = 1;
}
/*tex |prohibit_file_trace| (boolean) */
- tracefilenames = 1;
get_lua_boolean("texconfig", "trace_file_names", &tracefilenames);
/*tex |file_line_error| */
- filelineerrorstylep = false;
get_lua_boolean("texconfig", "file_line_error", &filelineerrorstylep);
/*tex |halt_on_error| */
- haltonerrorp = false;
get_lua_boolean("texconfig", "halt_on_error", &haltonerrorp);
+ /*tex |interactionoption| */
+ get_lua_number("texconfig", "interaction", &interactionoption);
+ if ((interactionoption < 0) || (interactionoption > 4)) {
+ interactionoption = 4;
+ }
/*tex |restrictedshell| */
v1 = NULL;
get_lua_string("texconfig", "shell_escape", &v1);
diff --git a/Build/source/texk/web2c/luatexdir/lua/mplibstuff.c b/Build/source/texk/web2c/luatexdir/lua/mplibstuff.c
index f1713ae0e6e..db453ce81bf 100644
--- a/Build/source/texk/web2c/luatexdir/lua/mplibstuff.c
+++ b/Build/source/texk/web2c/luatexdir/lua/mplibstuff.c
@@ -2,7 +2,7 @@
mplibstuff.w
-Copyright 2017 LuaTeX team <bugs@@luatex.org>
+Copyright 2019 LuaTeX team <bugs@@luatex.org>
This file is part of LuaTeX.
diff --git a/Build/source/texk/web2c/luatexdir/luaffi/ffi.c b/Build/source/texk/web2c/luatexdir/luaffi/ffi.c
index 7771b512db5..03667d9f582 100644
--- a/Build/source/texk/web2c/luatexdir/luaffi/ffi.c
+++ b/Build/source/texk/web2c/luatexdir/luaffi/ffi.c
@@ -3576,7 +3576,7 @@ int luaopen_ffi(lua_State *L)
"\n"
"The ARM processor is currently not supported. There are subtle\n"
"differences between this module and the one in luajitTeX \n"
-"and we hope to be in sync around TeXLive 2018.\n"
+"and we hope to be in sync around TeXLive 2020.\n"
"Different OS can have different interfaces,\n"
"for instance OS_WIN has not 'complex.h'. If you want portable\n"
"code, stick to the most common concepts.\n"
diff --git a/Build/source/texk/web2c/luatexdir/luaffi/ffi.h b/Build/source/texk/web2c/luatexdir/luaffi/ffi.h
index 8be6eccc192..8190a973892 100644
--- a/Build/source/texk/web2c/luatexdir/luaffi/ffi.h
+++ b/Build/source/texk/web2c/luatexdir/luaffi/ffi.h
@@ -404,6 +404,7 @@ static complex_float mk_complex_float(double real, double imag) {
complex_float ret = { real, imag };
return ret;
}
+//#if !defined(__MINGW64__)
static double creal(complex_double c) {
return c.real;
}
@@ -417,6 +418,7 @@ static double cimag(complex_double c) {
static float cimagf(complex_float c) {
return c.imag;
}
+//#endif
#endif
#define CALLBACK_FUNC_USR_IDX 1
diff --git a/Build/source/texk/web2c/luatexdir/luapplib/ppconf.h b/Build/source/texk/web2c/luatexdir/luapplib/ppconf.h
index 85d6dcb13a6..67c7d21aede 100644
--- a/Build/source/texk/web2c/luatexdir/luapplib/ppconf.h
+++ b/Build/source/texk/web2c/luatexdir/luapplib/ppconf.h
@@ -3,12 +3,11 @@
#define PP_CONF_H
//#include "utilarm.h" // keep in sync
-#if defined __arm__ || defined __ARM__ || defined ARM || defined __ARM || defined __arm || defined __ARM_ARCH ||defined __aarch64__ ||( defined(__sun) && defined(__SVR4))
-# define ARM_COMPLIANT 1
-#else
-# define ARM_COMPLIANT 0
-#endif
-
+#if defined __arm__ || defined __ARM__ || defined ARM || defined __ARM || defined __arm || defined __ARM_ARCH ||defined __aarch64__ ||( defined(__sun) && defined(__SVR4))
+# define ARM_COMPLIANT 1
+#else
+# define ARM_COMPLIANT 0
+#endif
/*
Aux flags:
@@ -81,4 +80,4 @@ Aux flags:
#define PPSIZEF PPUINTF
-#endif \ No newline at end of file
+#endif
diff --git a/Build/source/texk/web2c/luatexdir/luapplib/ppload.c b/Build/source/texk/web2c/luatexdir/luapplib/ppload.c
index 14b8bca1992..f51f7a5db68 100644
--- a/Build/source/texk/web2c/luatexdir/luapplib/ppload.c
+++ b/Build/source/texk/web2c/luatexdir/luapplib/ppload.c
@@ -60,6 +60,18 @@ const char ppname_byte_lookup[] = {
ghost->size = siz - sizeof(_ppname) - 1, \
(ppname)(ghost + 1))
+#if ARM_COMPLAINT
+#define ppname_flush_with_ego(O, ghost, siz, flgs) \
+ (iof_put(O, '\0'), \
+ pad=(O->pos - pos_begin)%(sizeof(ppname*)), \
+ iof_ensure(O, pad+sizeof(ppname *)), \
+ O->pos += sizeof(ppname *), \
+ O->pos += pad, \
+ ghost = (_ppname *)ppheap_flush(O, &siz), \
+ ghost->flags = flgs, \
+ ghost->size = siz - sizeof(_ppname) - 1 - pad - sizeof(ppname *), \
+ (ppname)(ghost + 1))
+#else
#define ppname_flush_with_ego(O, ghost, siz, flgs) \
(iof_put(O, '\0'), \
iof_ensure(O, sizeof(ppname *)), \
@@ -68,30 +80,26 @@ const char ppname_byte_lookup[] = {
ghost->flags = flgs, \
ghost->size = siz - sizeof(_ppname) - 1 - sizeof(ppname *), \
(ppname)(ghost + 1))
+#endif
-
-#if ARM_COMPLIANT
-#define ppname_set_alter_ego(name, ghost, ego) do {\
- ppname temp;\
- ppname *temp1;\
- temp = (name + (ghost)->size + 1) ; \
- temp1 = (ppname *)((void*)temp); \
- *temp1= ego; \
- }while(0)
+#if ARM_COMPLIANT
+#define ppname_set_alter_ego(name, ghost, ego) do{ \
+ size_t t = ((ghost)->size + 1); \
+ t = (t%sizeof(ppname *))==0?t: (t/sizeof(ppname *)+1)*sizeof(ppname *); \
+ (*((ppname *)(name + t)) = ego); \
+}while(0)
#else
#define ppname_set_alter_ego(name, ghost, ego) (*((ppname *)(name + (ghost)->size + 1)) = ego)
#endif
#if ARM_COMPLIANT
-#define ppname_get_alter_ego(name) (*((ppname *)( (void*)(name + ppname_size(name) + 1))))
+#define ppname_get_alter_ego(name) (*((ppname *)((name + (ppname_size(name)+1)%sizeof(ppname *) == 0 ? (ppname_size(name)+1) : ( (ppname_size(name)+1)/sizeof(ppname *) + 1 )*sizeof(ppname *) ))))
#else
#define ppname_get_alter_ego(name) (*((ppname *)(name + ppname_size(name) + 1)))
#endif
-
-
static ppname ppscan_name (iof *I, ppheap **pheap)
{
int c, decode;
@@ -101,7 +109,16 @@ static ppname ppscan_name (iof *I, ppheap **pheap)
size_t size;
const char *p, *e;
uint8_t v1, v2;
+#if ARM_COMPLIANT
+ ptrdiff_t pad;
+ uint8_t* pos_begin;
+#endif
+
O = ppheap_buffer(pheap, sizeof(_ppname), PPNAME_INIT);
+#if ARM_COMPLIANT
+ pad=0;
+ pos_begin = O->pos;
+#endif
for (decode = 0, c = iof_char(I); c >= 0 && ppname_byte_lookup[c]; c = iof_next(I))
{
if (c == '#')
@@ -112,6 +129,10 @@ static ppname ppscan_name (iof *I, ppheap **pheap)
return ppname_flush(O, ghost1, size, 0);
encoded = ppname_flush_with_ego(O, ghost1, size, 0|PPNAME_ENCODED);
O = ppheap_buffer(pheap, sizeof(_ppname), PPNAME_INIT);
+#if ARM_COMPLIANT
+ pad=0;
+ pos_begin = O->pos;
+#endif
for (p = encoded, e = encoded + ghost1->size; p < e; ++p)
{
if (*p == '#' && p + 2 < e) {
@@ -138,8 +159,15 @@ static ppname ppscan_exec (iof *I, ppheap **pheap, int first)
size_t size;
const char *p, *e;
uint8_t v1, v2;
-
+#if ARM_COMPLIANT
+ ptrdiff_t pad;
+ uint8_t* pos_begin;
+#endif
O = ppheap_buffer(pheap, sizeof(_ppname), PPNAME_INIT);
+#if ARM_COMPLIANT
+ pad=0;
+ pos_begin = O->pos;
+#endif
iof_put(O, first);
for (decode = 0, c = iof_char(I); c >= 0 && ppname_byte_lookup[c]; c = iof_next(I))
{
@@ -151,6 +179,10 @@ static ppname ppscan_exec (iof *I, ppheap **pheap, int first)
return ppname_flush(O, ghost1, size, PPNAME_EXEC);
encoded = ppname_flush_with_ego(O, ghost1, size, PPNAME_EXEC|PPNAME_ENCODED);
O = ppheap_buffer(pheap, sizeof(_ppname), PPNAME_INIT);
+#if ARM_COMPLIANT
+ pad=0;
+ pos_begin = O->pos;
+#endif
for (p = encoded, e = encoded + ghost1->size; p < e; ++p)
{
if (*p == '#' && p + 2 < e) {
@@ -203,14 +235,27 @@ ppname ppname_encoded (ppname name)
ghost->size = siz - sizeof(_ppstring) - 1, \
(ppstring)(ghost + 1))
+#if ARM_COMPLAINT
#define ppstring_flush_with_ego(O, ghost, siz, flgs) \
(iof_put(O, '\0'), \
- iof_ensure(O, sizeof(ppstring *)), \
+ pad=(O->pos - pos_begin)%(sizeof(ppstring*)), \
+ iof_ensure(O, pad+sizeof(ppstring *)), \
+ O->pos += sizeof(ppstring *), \
+ O->pos += pad, \
+ ghost = (_ppstring *)ppheap_flush(O, &siz), \
+ ghost->flags = flgs, \
+ ghost->size = siz - sizeof(_ppstring) - 1 - pad - sizeof(ppstring *), \
+ (ppstring)(ghost + 1))
+#else
+#define ppstring_flush_with_ego(O, ghost, siz, flgs) \
+ (iof_put(O, '\0'), \
+ iof_ensure(O, sizeof(ppstring *)), \
O->pos += sizeof(ppstring *), \
ghost = (_ppstring *)ppheap_flush(O, &siz), \
ghost->flags = flgs, \
ghost->size = siz - sizeof(_ppstring) - 1 - sizeof(ppstring *), \
(ppstring)(ghost + 1))
+#endif
#define ppstring_utf16be_bom(decoded) (decoded[0] == ((char)0xFE) && decoded[1] == ((char)0xFF) )
#define ppstring_utf16le_bom(decoded) (decoded[0] == ((char)0xFF) && decoded[1] == ((char)0xFE))
@@ -225,15 +270,19 @@ ppname ppname_encoded (ppname name)
-#if ARM_COMPLIANT
-#define ppstring_set_alter_ego(string, ghost, ego) (*((ppstring *)((void *)(string + (ghost)->size + 1))) = ego)
+#if ARM_COMPLIANT
+#define ppstring_set_alter_ego(string, ghost, ego) do{ \
+ size_t t = ((ghost)->size + 1); \
+ t = (t%sizeof(ppstring *))==0?t: (t/sizeof(ppstring *)+1)*sizeof(ppstring *); \
+ (*((ppstring *)(string + t)) = ego); \
+}while(0)
#else
-#define ppstring_set_alter_ego(string, ghost, ego) (*((ppstring *)(string + (ghost)->size + 1)) = ego)
+#define ppstring_set_alter_ego(string, ghost, ego) (*((ppstring *)((string + (ghost)->size + 1))) = ego)
#endif
-#if ARM_COMPLIANT
-#define ppstring_get_alter_ego(string) (*((ppstring *)((void *)(string + ppstring_size(string) + 1))))
+#if ARM_COMPLIANT
+#define ppstring_get_alter_ego(string) (*((ppstring *)((string + (ppstring_size(string)+1)%sizeof(ppstring *) == 0 ? (ppstring_size(string)+1) : ( (ppstring_size(string)+1)/sizeof(ppstring *) + 1 )*sizeof(ppstring *) ))))
#else
#define ppstring_get_alter_ego(string) (*((ppstring *)(string + ppstring_size(string) + 1)))
#endif
@@ -249,7 +298,16 @@ static ppstring ppscan_string (iof *I, ppheap **pheap)
uint8_t *p, *e;
ppstring encoded, decoded;
size_t size;
+#if ARM_COMPLIANT
+ ptrdiff_t pad;
+ uint8_t* pos_begin;
+#endif
+
O = ppheap_buffer(pheap, sizeof(_ppstring), PPSTRING_INIT);
+#if ARM_COMPLIANT
+ pad=0;
+ pos_begin = O->pos;
+#endif
for (decode = 0, balance = 0, c = iof_char(I); c >= 0; )
{
switch (c)
@@ -292,6 +350,10 @@ static ppstring ppscan_string (iof *I, ppheap **pheap)
}
encoded = ppstring_flush_with_ego(O, ghost1, size, 0|PPSTRING_ENCODED);
O = ppheap_buffer(pheap, sizeof(_ppstring), PPSTRING_INIT);
+#if ARM_COMPLIANT
+ pad=0;
+ pos_begin = O->pos;
+#endif
for (p = (uint8_t *)encoded, e = (uint8_t *)encoded + ghost1->size; p < e; ++p)
{
if (*p == '\\')
@@ -353,14 +415,25 @@ static ppstring ppscan_base16 (iof *I, ppheap **pheap)
size_t size;
ppstring encoded, decoded;
uint8_t *p, *e;
-
+#if ARM_COMPLIANT
+ ptrdiff_t pad;
+ uint8_t* pos_begin;
+#endif
O = ppheap_buffer(pheap, sizeof(_ppstring), PPSTRING_INIT);
+#if ARM_COMPLIANT
+ pad=0;
+ pos_begin = O->pos;
+#endif
for (c = iof_char(I); c >= 0 && (base16_digit(c) || ignored_char(c)); c = iof_next(I))
iof_put(O, c);
if (c == '>')
++I->pos;
encoded = ppstring_flush_with_ego(O, ghost1, size, PPSTRING_BASE16|PPSTRING_ENCODED);
O = ppheap_buffer(pheap, sizeof(_ppstring), (ghost1->size >> 1) + 1);
+#if ARM_COMPLIANT
+ pad=0;
+ pos_begin = O->pos;
+#endif
for (p = (uint8_t *)encoded, e = (uint8_t *)encoded + ghost1->size; p < e; ++p)
{
if ((v1 = base16_value(*p)) < 0) // ignored
@@ -383,9 +456,20 @@ static ppstring ppstring_buffer (iof *O, ppheap **pheap)
ppstring encoded, decoded;
uint8_t *p, *e;
size_t size;
-
+#if ARM_COMPLIANT
+ ptrdiff_t pad;
+ uint8_t* pos_begin;
+#endif
+#if ARM_COMPLIANT
+ pad=0;
+ pos_begin = O->pos;
+#endif
decoded = ppstring_flush_with_ego(O, ghost2, size, 0|PPSTRING_DECODED);
O = ppheap_buffer(pheap, sizeof(_ppstring), (ghost2->size << 1) + 1);
+#if ARM_COMPLIANT
+ pad=0;
+ pos_begin = O->pos;
+#endif
for (p = (uint8_t *)decoded, e = (uint8_t *)decoded + ghost2->size; p < e; ++p)
iof_set2(O, base16_uc_alphabet[(*p)>>4], base16_uc_alphabet[(*p)&15]);
encoded = ppstring_flush_with_ego(O, ghost1, size, PPSTRING_BASE16|PPSTRING_ENCODED);
@@ -412,7 +496,15 @@ static ppstring ppscan_base85 (iof *I, ppheap **pheap)
_ppstring *ghost1, *ghost2;
size_t size;
ppstring encoded, decoded;
+#if ARM_COMPLIANT
+ ptrdiff_t pad;
+ uint8_t* pos_begin;
+#endif
O = ppheap_buffer(pheap, sizeof(_ppstring), PPSTRING_INIT);
+#if ARM_COMPLIANT
+ pad=0;
+ pos_begin = O->pos;
+#endif
for (c = iof_char(I); (c >= '!' && c <= 'u') || c == 'z' || c == 'y'; c = iof_next(I))
iof_put(O, c);
if (c == '~')
@@ -421,6 +513,10 @@ static ppstring ppscan_base85 (iof *I, ppheap **pheap)
encoded = ppstring_flush_with_ego(O, ghost1, size, PPSTRING_BASE85|PPSTRING_ENCODED);
iof_string_reader(&B, encoded, ghost1->size);
O = ppheap_buffer(pheap, sizeof(_ppstring), (ghost1->size * 5 / 4) + 1);
+#if ARM_COMPLIANT
+ pad=0;
+ pos_begin = O->pos;
+#endif
base85_decode(&B, O);
decoded = ppstring_flush_with_ego(O, ghost2, size, 0|PPSTRING_DECODED);
ppstring_check_bom2(decoded, ghost1, ghost2);
@@ -462,8 +558,16 @@ static ppstring ppscan_crypt_string (iof *I, ppcrypt *crypt, ppheap **pheap)
ppstring encoded, decoded;
uint8_t *p, *e;
size_t size;
+#if ARM_COMPLIANT
+ ptrdiff_t pad;
+ uint8_t* pos_begin;
+#endif
O = ppheap_buffer(pheap, sizeof(_ppstring), PPSTRING_INIT);
+#if ARM_COMPLIANT
+ pad=0;
+ pos_begin = O->pos;
+#endif
for (balance = 0, encode = 0, c = iof_char(I); c >= 0; )
{
switch (c)
@@ -557,6 +661,10 @@ static ppstring ppscan_crypt_string (iof *I, ppcrypt *crypt, ppheap **pheap)
}
decoded = ppstring_flush_with_ego(O, ghost2, size, PPSTRING_DECODED);
O = ppheap_buffer(pheap, sizeof(_ppstring), ghost2->size);
+#if ARM_COMPLIANT
+ pad=0;
+ pos_begin = O->pos;
+#endif
for (p = (uint8_t *)decoded, e = (uint8_t *)decoded + ghost2->size; p < e; ++p)
{
switch ((b = ppstring_byte_escape[*p]))
@@ -588,8 +696,15 @@ static ppstring ppscan_crypt_base16 (iof *I, ppcrypt *crypt, ppheap **pheap)
ppstring encoded, decoded;
uint8_t *p, *e;
size_t size;
-
+#if ARM_COMPLIANT
+ ptrdiff_t pad;
+ uint8_t* pos_begin;
+#endif
O = ppheap_buffer(pheap, sizeof(_ppstring), PPSTRING_INIT);
+#if ARM_COMPLIANT
+ pad=0;
+ pos_begin = O->pos;
+#endif
// base16_decode(I, O); // no info about the last char..
for (c = iof_char(I); c != '>' && c >= 0; )
{
@@ -625,6 +740,10 @@ static ppstring ppscan_crypt_base16 (iof *I, ppcrypt *crypt, ppheap **pheap)
decoded = ppstring_flush_with_ego(O, ghost2, size, PPSTRING_DECODED);
/* recreate an encoded form */
O = ppheap_buffer(pheap, sizeof(_ppstring), (ghost2->size << 1) + 1);
+#if ARM_COMPLIANT
+ pad=0;
+ pos_begin = O->pos;
+#endif
for (p = (uint8_t *)decoded, e = (uint8_t *)decoded + ghost2->size; p < e; ++p)
iof_set2(O, base16_uc_alphabet[(*p)>>4], base16_uc_alphabet[(*p)&15]);
encoded = ppstring_flush_with_ego(O, ghost1, size, PPSTRING_BASE16|PPSTRING_ENCODED);
@@ -2190,7 +2309,7 @@ static pparray * pppage_node (ppdict *dict, ppuint *count, ppname *type)
break;
case 'C':
if (ppname_is(key, "Count"))
- ppobj_get_uint(obj, *count);
+ ppobj_rget_uint(obj, *count);
break;
case 'K':
if (ppname_is(key, "Kids"))
diff --git a/Build/source/texk/web2c/luatexdir/luapplib/util/utilarm.h b/Build/source/texk/web2c/luatexdir/luapplib/util/utilarm.h
index 546c6d4dd1a..b738fbb28c3 100644
--- a/Build/source/texk/web2c/luatexdir/luapplib/util/utilarm.h
+++ b/Build/source/texk/web2c/luatexdir/luapplib/util/utilarm.h
@@ -1,10 +1,10 @@
-#ifndef UTIL_ARM_H
-#define UTIL_ARM_H
-
-#if defined __arm__ || defined __ARM__ || defined ARM || defined __ARM || defined __arm || defined __ARM_ARCH ||defined __aarch64__ ||( defined(__sun) && defined(__SVR4))
-# define ARM_COMPLIANT 1
-#else
-# define ARM_COMPLIANT 0
-#endif
-
+#ifndef UTIL_ARM_H
+#define UTIL_ARM_H
+
+#if defined __arm__ || defined __ARM__ || defined ARM || defined __ARM || defined __arm || defined __ARM_ARCH ||defined __aarch64__ ||( defined(__sun) && defined(__SVR4))
+# define ARM_COMPLIANT 1
+#else
+# define ARM_COMPLIANT 0
+#endif
+
#endif \ No newline at end of file
diff --git a/Build/source/texk/web2c/luatexdir/luapplib/util/utilfpred.c b/Build/source/texk/web2c/luatexdir/luapplib/util/utilfpred.c
index 4416161eab3..5418a520151 100644
--- a/Build/source/texk/web2c/luatexdir/luapplib/util/utilfpred.c
+++ b/Build/source/texk/web2c/luatexdir/luapplib/util/utilfpred.c
@@ -58,7 +58,8 @@ that are permanently \0.
#define MAX_COMPONENTS 8
-typedef struct predictor_state {
+/*typedef */
+struct predictor_state {
int default_predictor; /* default predictor indicator */
int current_predictor; /* current predictor, possibly taken from algorithm marker in PNG data */
int rowsamples; /* number of pixels in a scanline (/DecodeParms << /Columns ... >>) */
@@ -90,7 +91,7 @@ typedef struct predictor_state {
};
int flush;
int status;
-} predictor_state;
+} ; /*predictor_state;*/
enum {
STATUS_LAST = 0,
diff --git a/Build/source/texk/web2c/luatexdir/luatex_svnversion.h b/Build/source/texk/web2c/luatexdir/luatex_svnversion.h
index 95d9421d988..4b4d50e8c7e 100644
--- a/Build/source/texk/web2c/luatexdir/luatex_svnversion.h
+++ b/Build/source/texk/web2c/luatexdir/luatex_svnversion.h
@@ -1 +1 @@
-#define luatex_svn_revision 7018
+#define luatex_svn_revision 7047
diff --git a/Build/source/texk/web2c/luatexdir/tex/errors.c b/Build/source/texk/web2c/luatexdir/tex/errors.c
index b630422ee98..0c64927cea2 100644
--- a/Build/source/texk/web2c/luatexdir/tex/errors.c
+++ b/Build/source/texk/web2c/luatexdir/tex/errors.c
@@ -965,7 +965,8 @@ void normal_warning(const char *t, const char *p)
new_line_char_par = 10;
report_id = callback_defined(show_lua_error_hook_callback);
if (report_id == 0) {
- tprint(p);
+ if (p != NULL)
+ tprint(p);
help2(
"The lua interpreter ran into a problem, so the",
"remainder of this lua chunk will be ignored."