aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authormax99x <max99x@gmail.com>2011-07-23 06:58:49 +0300
committermax99x <max99x@gmail.com>2011-07-24 05:25:45 +0300
commit5aea0ba8784bc385e52e769f8e90df5fcd833a7a (patch)
tree9f3c70018d11fbe67d5d800e89e35e4f8207f784 /src
parenta48bfddf2b9f9d6f6b6ee5dec41004afed3a71ba (diff)
Added _formatString() special-case for null values (similar to glibc).
Diffstat (limited to 'src')
-rw-r--r--src/library.js20
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--) {