patch 7.4.1400
Problem: Perl eval doesn't work properly on 64-bit big-endian machine.
Solution: Use 32 bit type for the key. (Danek Duvall)
diff --git a/src/if_perl.xs b/src/if_perl.xs
index 47c9440..9ca5291 100644
--- a/src/if_perl.xs
+++ b/src/if_perl.xs
@@ -1097,7 +1097,7 @@
case SVt_PVHV: /* dictionary */
{
HE * entry;
- size_t key_len;
+ I32 key_len;
char * key;
dictitem_T * item;
SV * item2;
@@ -1121,9 +1121,9 @@
for (entry = hv_iternext((HV *)sv); entry; entry = hv_iternext((HV *)sv))
{
key_len = 0;
- key = hv_iterkey(entry, (I32 *)&key_len);
+ key = hv_iterkey(entry, &key_len);
- if (!key || !key_len || strlen(key) < key_len) {
+ if (!key || !key_len || strlen(key) < (size_t)key_len) {
EMSG2("Malformed key Dictionary '%s'", key && *key ? key : "(empty)");
break;
}
diff --git a/src/version.c b/src/version.c
index e822619..3bcbd8d 100644
--- a/src/version.c
+++ b/src/version.c
@@ -749,6 +749,8 @@
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 1400,
+/**/
1399,
/**/
1398,