U8 bytes[sizeof(NV)];
} NV_bytes;
-#if defined(HAS_LONG_DOUBLE) && defined(USE_LONG_DOUBLE)
+#if defined(HAS_LONG_DOUBLE)
typedef union {
long double ld;
U8 bytes[sizeof(long double)];
#define TYPE_IS_PACK 0x800
#define TYPE_ENDIANNESS_MASK (TYPE_IS_BIG_ENDIAN|TYPE_IS_LITTLE_ENDIAN)
#define TYPE_MODIFIERS(t) ((t) & ~0xFF)
-#define TYPE_NO_MODIFIERS(t) ((t) & 0xFF)
+#define TYPE_NO_MODIFIERS(t) ((U8) (t))
# define TYPE_ENDIANNESS(t) ((t) & TYPE_ENDIANNESS_MASK)
# define TYPE_NO_ENDIANNESS(t) ((t) & ~TYPE_ENDIANNESS_MASK)
Perl_ck_warner(aTHX_ packWARN(WARN_UNPACK),
"Character in '%c' format wrapped in unpack",
(int) TYPE_NO_MODIFIERS(datumtype));
- val &= 0xff;
+ val = (U8) val;
}
*s += retlen;
return (U8)val;
} else from += retlen;
if (val >= 0x100) {
bad |= 2;
- val &= 0xff;
+ val = (U8) val;
}
if (UNLIKELY(needs_swap))
*(U8 *)--buf = (U8)val;
patptr++;
} else {
/* We should have found a template code */
- I32 code = *patptr++ & 0xFF;
+ I32 code = (U8) *patptr++;
U32 inherited_modifiers = 0;
if (code == ','){ /* grandfather in commas but with a warning */
cdouble += anv.nv;
}
break;
-#if defined(HAS_LONG_DOUBLE) && defined(USE_LONG_DOUBLE)
+#if defined(HAS_LONG_DOUBLE)
case 'D':
while (len-- > 0) {
ld_bytes aldouble;
if ((-128 > aiv || aiv > 127))
Perl_ck_warner(aTHX_ packWARN(WARN_PACK),
"Character in 'c' format wrapped in pack");
- PUSH_BYTE(utf8, cur, (U8)(aiv & 0xff));
+ PUSH_BYTE(utf8, cur, (U8)aiv);
}
break;
case 'C':
if ((0 > aiv || aiv > 0xff))
Perl_ck_warner(aTHX_ packWARN(WARN_PACK),
"Character in 'C' format wrapped in pack");
- PUSH_BYTE(utf8, cur, (U8)(aiv & 0xff));
+ PUSH_BYTE(utf8, cur, (U8)aiv);
}
break;
case 'W': {
}
Perl_ck_warner(aTHX_ packWARN(WARN_PACK),
"Character in 'W' format wrapped in pack");
- auv &= 0xff;
+ auv = (U8) auv;
}
if (cur >= end) {
*cur = '\0';
}
break;
}
-#if defined(HAS_LONG_DOUBLE) && defined(USE_LONG_DOUBLE)
+#if defined(HAS_LONG_DOUBLE)
case 'D': {
ld_bytes aldouble;
/* long doubles can have unused bits, which may be nonzero */