Skip to content

Commit 7f38f0a

Browse files
committed
readline: set null as callback return in case there's no error
The cursor move functions accept a callback. It was possible that `undefined` was returned in case there was no error instead of null.
1 parent 4a41ffc commit 7f38f0a

File tree

2 files changed

+16
-8
lines changed

2 files changed

+16
-8
lines changed

lib/readline.js

+4-4
Original file line numberDiff line numberDiff line change
@@ -1198,7 +1198,7 @@ function cursorTo(stream, x, y, callback) {
11981198

11991199
if (stream == null || (typeof x !== 'number' && typeof y !== 'number')) {
12001200
if (typeof callback === 'function')
1201-
process.nextTick(callback);
1201+
process.nextTick(callback, null);
12021202
return true;
12031203
}
12041204

@@ -1219,7 +1219,7 @@ function moveCursor(stream, dx, dy, callback) {
12191219

12201220
if (stream == null || !(dx || dy)) {
12211221
if (typeof callback === 'function')
1222-
process.nextTick(callback);
1222+
process.nextTick(callback, null);
12231223
return true;
12241224
}
12251225

@@ -1253,7 +1253,7 @@ function clearLine(stream, dir, callback) {
12531253

12541254
if (stream === null || stream === undefined) {
12551255
if (typeof callback === 'function')
1256-
process.nextTick(callback);
1256+
process.nextTick(callback, null);
12571257
return true;
12581258
}
12591259

@@ -1275,7 +1275,7 @@ function clearScreenDown(stream, callback) {
12751275

12761276
if (stream === null || stream === undefined) {
12771277
if (typeof callback === 'function')
1278-
process.nextTick(callback);
1278+
process.nextTick(callback, null);
12791279
return true;
12801280
}
12811281

test/parallel/test-readline-csi.js

+12-4
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,9 @@ assert.throws(() => {
3939
}, /ERR_INVALID_CALLBACK/);
4040

4141
// Verify that clearScreenDown() does not throw on null or undefined stream.
42-
assert.strictEqual(readline.clearScreenDown(null, common.mustCall()), true);
42+
assert.strictEqual(readline.clearScreenDown(null, common.mustCall((err) => {
43+
assert.strictEqual(err, null);
44+
})), true);
4345
assert.strictEqual(readline.clearScreenDown(undefined, common.mustCall()),
4446
true);
4547

@@ -67,7 +69,9 @@ assert.throws(() => {
6769
// Verify that clearLine() does not throw on null or undefined stream.
6870
assert.strictEqual(readline.clearLine(null, 0), true);
6971
assert.strictEqual(readline.clearLine(undefined, 0), true);
70-
assert.strictEqual(readline.clearLine(null, 0, common.mustCall()), true);
72+
assert.strictEqual(readline.clearLine(null, 0, common.mustCall((err) => {
73+
assert.strictEqual(err, null);
74+
})), true);
7175
assert.strictEqual(readline.clearLine(undefined, 0, common.mustCall()), true);
7276

7377
// Nothing is written when moveCursor 0, 0
@@ -101,15 +105,19 @@ assert.throws(() => {
101105
// Verify that moveCursor() does not throw on null or undefined stream.
102106
assert.strictEqual(readline.moveCursor(null, 1, 1), true);
103107
assert.strictEqual(readline.moveCursor(undefined, 1, 1), true);
104-
assert.strictEqual(readline.moveCursor(null, 1, 1, common.mustCall()), true);
108+
assert.strictEqual(readline.moveCursor(null, 1, 1, common.mustCall((err) => {
109+
assert.strictEqual(err, null);
110+
})), true);
105111
assert.strictEqual(readline.moveCursor(undefined, 1, 1, common.mustCall()),
106112
true);
107113

108114
// Undefined or null as stream should not throw.
109115
assert.strictEqual(readline.cursorTo(null), true);
110116
assert.strictEqual(readline.cursorTo(), true);
111117
assert.strictEqual(readline.cursorTo(null, 1, 1, common.mustCall()), true);
112-
assert.strictEqual(readline.cursorTo(undefined, 1, 1, common.mustCall()), true);
118+
assert.strictEqual(readline.cursorTo(undefined, 1, 1, common.mustCall((err) => {
119+
assert.strictEqual(err, null);
120+
})), true);
113121

114122
writable.data = '';
115123
assert.strictEqual(readline.cursorTo(writable, 'a'), true);

0 commit comments

Comments
 (0)