Index: ext/standard/scanf.c =================================================================== --- ext/standard/scanf.c (revision 299276) +++ ext/standard/scanf.c (working copy) @@ -581,7 +581,8 @@ int varStart, zval **return_value TSRMLS_DC) { int numVars, nconversions, totalVars = -1; - int i, value, result; + int i, result; + long value; int objIndex; char *end, *baseString; zval **current; @@ -1059,9 +1060,9 @@ */ if (!(flags & SCAN_SUPPRESS)) { *end = '\0'; - value = (int) (*fn)(buf, NULL, base); + value = (long) (*fn)(buf, NULL, base); if ((flags & SCAN_UNSIGNED) && (value < 0)) { - snprintf(buf, sizeof(buf), "%u", value); /* INTL: ISO digit */ + snprintf(buf, sizeof(buf), "%lu", value); /* INTL: ISO digit */ if (numVars && objIndex >= argCount) { break; } else if (numVars) {