diff options
author | max99x <max99x@gmail.com> | 2011-07-23 06:58:49 +0300 |
---|---|---|
committer | max99x <max99x@gmail.com> | 2011-07-24 05:25:45 +0300 |
commit | 5aea0ba8784bc385e52e769f8e90df5fcd833a7a (patch) | |
tree | 9f3c70018d11fbe67d5d800e89e35e4f8207f784 /src | |
parent | a48bfddf2b9f9d6f6b6ee5dec41004afed3a71ba (diff) |
Added _formatString() special-case for null values (similar to glibc).
Diffstat (limited to 'src')
-rw-r--r-- | src/library.js | 20 |
1 files changed, 15 insertions, 5 deletions
diff --git a/src/library.js b/src/library.js index 51fb6ce5..3e346280 100644 --- a/src/library.js +++ b/src/library.js @@ -2156,8 +2156,12 @@ LibraryManager.library = { argText = argText.toUpperCase(); } } else if (next == 'p'.charCodeAt(0)) { - prefix = '0x'; - argText = currAbsArg.toString(16); + if (currAbsArg === 0) { + argText = '(nil)'; + } else { + prefix = '0x'; + argText = currAbsArg.toString(16); + } } if (precisionSet) { while (argText.length < precision) { @@ -2277,9 +2281,15 @@ LibraryManager.library = { }); } else if (next == 's'.charCodeAt(0)) { // String. - var copiedString = String_copy(getNextArg()); - if (precisionSet && copiedString.length > precision) { - copiedString = copiedString.slice(0, precision); + var arg = getNextArg(); + var copiedString; + if (arg) { + copiedString = String_copy(arg); + if (precisionSet && copiedString.length > precision) { + copiedString = copiedString.slice(0, precision); + } + } else { + copiedString = intArrayFromString('(null)', true); } if (!flagLeftAlign) { while (copiedString.length < width--) { |