Skip to content

Commit 882b658

Browse files
committed
Buffer handling improvements in examples/extras
* Allow non-plain buffers in some examples/extras. * Eventloop .write() binding buffer handling fix, relied on obsolete Duktape.Buffer. * Client socket example fix.
1 parent 51ce15d commit 882b658

9 files changed

Lines changed: 21 additions & 23 deletions

File tree

examples/cmdline/duk_cmdline.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -234,7 +234,7 @@ static duk_ret_t wrapped_compile_execute(duk_context *ctx, void *udata) {
234234

235235
duk_dup_top(ctx);
236236
duk_dump_function(ctx);
237-
bc_ptr = duk_require_buffer(ctx, -1, &bc_len);
237+
bc_ptr = duk_require_buffer_data(ctx, -1, &bc_len);
238238
filename = duk_require_string(ctx, -5);
239239
#if defined(EMSCRIPTEN)
240240
if (filename[0] == '/') {
@@ -920,7 +920,7 @@ static duk_ret_t fileio_write_file(duk_context *ctx) {
920920
}
921921

922922
len = 0;
923-
buf = (char *) duk_to_buffer(ctx, 1, &len);
923+
buf = (char *) duk_require_buffer_data(ctx, 1, &len);
924924
for (off = 0; off < len;) {
925925
size_t got;
926926
got = fwrite((const void *) (buf + off), 1, len - off, f);

examples/eventloop/c_eventloop.js

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -185,5 +185,8 @@ EventLoop.setReader = function(fd, cb_read) {
185185

186186
EventLoop.write = function(fd, data) {
187187
// This simple example doesn't have support for write blocking / draining
188-
var rc = Socket.write(fd, Duktape.Buffer(data));
188+
if (typeof data === 'string') {
189+
data = new TextEncoder().encode(data);
190+
}
191+
var rc = Socket.write(fd, data);
189192
}
Lines changed: 3 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,16 @@
1-
21
var HOST = 'localhost';
32
var PORT = 80;
4-
var EXIT_TIMEOUT = 300e3;
5-
6-
print('automatic exit after ' + (EXIT_TIMEOUT / 1e3) + ' seconds');
7-
setTimeout(function () {
8-
print('exit timer');
9-
EventLoop.requestExit();
10-
}, EXIT_TIMEOUT);
113

124
EventLoop.connect(HOST, PORT, function (fd) {
135
print('connected to ' + HOST + ':' + PORT + ', fd', fd);
146
EventLoop.setReader(fd, function (fd, data) {
157
print('read from fd', fd);
16-
print(data);
17-
EventLoop.close(fd);
8+
print(new TextDecoder().decode(data));
9+
// Read until completion, socket is closed by server.
1810
});
1911
EventLoop.write(fd, "GET / HTTP/1.1\r\n" +
2012
"Host: " + HOST + "\r\n" +
2113
"User-Agent: client-socket-test.js\r\n" +
14+
"Connection: close\r\n" +
2215
"\r\n");
2316
});

examples/eventloop/ecma_eventloop.js

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -355,7 +355,10 @@ EventLoop.setReader = function(fd, cb_read) {
355355

356356
EventLoop.write = function(fd, data) {
357357
// This simple example doesn't have support for write blocking / draining
358-
var rc = Socket.write(fd, Duktape.Buffer(data));
358+
if (typeof data === 'string') {
359+
data = new TextEncoder().encode(data);
360+
}
361+
var rc = Socket.write(fd, data);
359362
}
360363

361364
/*

examples/eventloop/fileio.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,15 +55,15 @@ void fileio_push_file_buffer(duk_context *ctx, const char *filename) {
5555
/* Push file as a string. */
5656
void fileio_push_file_string(duk_context *ctx, const char *filename) {
5757
fileio_push_file_buffer(ctx, filename);
58-
if (duk_is_buffer(ctx, -1)) {
58+
if (duk_is_buffer_data(ctx, -1)) {
5959
duk_buffer_to_string(ctx, -1);
6060
}
6161
}
6262

6363
static int fileio_readfile(duk_context *ctx) {
6464
const char *filename = duk_to_string(ctx, 0);
6565
fileio_push_file_buffer(ctx, filename);
66-
if (!duk_is_buffer(ctx, -1)) {
66+
if (!duk_is_buffer_data(ctx, -1)) {
6767
return DUK_RET_ERROR;
6868
}
6969
return 1;

examples/eventloop/server-socket-test.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
21
var HOST = 'localhost'
32
var PORT = 12345;
43
var EXIT_TIMEOUT = 300e3;

examples/eventloop/socket.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -250,7 +250,7 @@ static int socket_write(duk_context *ctx) {
250250
size_t len;
251251
ssize_t rc;
252252

253-
data = duk_to_buffer(ctx, 1, &len);
253+
data = duk_require_buffer_data(ctx, 1, &len);
254254

255255
/* MSG_NOSIGNAL: avoid SIGPIPE */
256256
#if defined(__APPLE__)

extras/logging/duk_logging.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ static duk_ret_t duk__logger_prototype_raw(duk_context *ctx) {
109109
const char *data;
110110
duk_size_t data_len;
111111

112-
data = (const char *) duk_require_buffer(ctx, 0, &data_len);
112+
data = (const char *) duk_require_buffer_data(ctx, 0, &data_len);
113113
fwrite((const void *) data, 1, data_len, stderr);
114114
fputc((int) '\n', stderr);
115115
#if defined(DUK_LOGGING_FLUSH)

extras/print-alert/duk_print_alert.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,8 @@ static duk_ret_t duk__print_alert_helper(duk_context *ctx, FILE *fh) {
2323
* arguments, join them with a single space, and append a newline.
2424
*/
2525

26-
if (nargs == 1 && duk_is_buffer(ctx, 0)) {
27-
buf = (const duk_uint8_t *) duk_get_buffer(ctx, 0, &sz_buf);
26+
if (nargs == 1 && duk_is_buffer_data(ctx, 0)) {
27+
buf = (const duk_uint8_t *) duk_get_buffer_data(ctx, 0, &sz_buf);
2828
fwrite((const void *) buf, 1, (size_t) sz_buf, fh);
2929
} else {
3030
duk_push_string(ctx, " ");
@@ -57,8 +57,8 @@ static duk_ret_t duk__print_alert_helper(duk_context *ctx, FILE *fh) {
5757
* arguments, join them with a single space, and append a newline.
5858
*/
5959

60-
if (nargs == 1 && duk_is_buffer(ctx, 0)) {
61-
buf = (const duk_uint8_t *) duk_get_buffer(ctx, 0, &sz_buf);
60+
if (nargs == 1 && duk_is_buffer_data(ctx, 0)) {
61+
buf = (const duk_uint8_t *) duk_get_buffer_data(ctx, 0, &sz_buf);
6262
} else if (nargs > 0) {
6363
duk_idx_t i;
6464
duk_size_t sz_str;

0 commit comments

Comments
 (0)