Skip to content

Commit f5cd23c

Browse files
committed
Fix typos and c arg types
1 parent cc5f5fe commit f5cd23c

File tree

4 files changed

+10
-5
lines changed

4 files changed

+10
-5
lines changed

packages/php-wasm/compile/php/php_wasm.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -297,7 +297,7 @@ EM_ASYNC_JS(int, wasm_poll_socket, (php_socket_t socketd, int events, int timeou
297297
* @see https://github.com/WordPress/wordpress-playground/issues/951
298298
* @see https://github.com/emscripten-core/emscripten/issues/13214
299299
*/
300-
EM_ASYNC_JS(__wasi_errno_t, js_fd_read, (__wasi_fd_t fd, const __wasi_iovec_t *iovs, size_t iovs_len, __wasi_size_t *nread), {
300+
EM_ASYNC_JS(__wasi_errno_t, js_fd_read, (__wasi_fd_t fd, const __wasi_iovec_t *iov, size_t iovcnt, __wasi_size_t *pnum), {
301301
var returnCode;
302302
var stream;
303303
let num = 0;

packages/php-wasm/compile/php/phpwasm-emscripten-library.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@ const LibraryExample = {
9696
const originalHandleSleep = Asyncify.handleSleep;
9797
Asyncify.handleSleep = function (fn) {
9898
const e = new Error();
99-
for (const elem of extractPHPFunctionsFromStack2(e.stack)) {
99+
for (const elem of extractPHPFunctionsFromStack(e.stack)) {
100100
global.asyncifyFunctions.add(elem);
101101
}
102102
return originalHandleSleep(fn);

packages/php-wasm/node/public/php_8_0.js

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -646,9 +646,9 @@ function __asyncjs__js_module_onMessage(data,response_buffer) { return Asyncify.
646646
__asyncjs__js_module_onMessage.sig = 'iii';
647647
function __asyncjs__js_popen_to_file(cmd,mode,exit_code_ptr) { return Asyncify.handleAsync(async () => { if (!command) return 1; const cmdstr = UTF8ToString(command); if (!cmdstr.length) return 0; const modestr = UTF8ToString(mode); if (!modestr.length) return 0; if (modestr === 'w') { console.error('popen($cmd, "w") is not implemented yet'); } return new Promise(async (wakeUp) => { let cp; try { cp = PHPWASM.spawnProcess(cmdstr, []); if (cp instanceof Promise) { cp = await cp; } } catch (e) { console.error(e); if (e.code === 'SPAWN_UNSUPPORTED') { return 1; } throw e; } const outByteArrays = []; cp.stdout.on('data', function (data) { outByteArrays.push(data); }); const outputPath = '/tmp/popen_output'; cp.on('exit', function (exitCode) { const outBytes = new Uint8Array( outByteArrays.reduce((acc, curr) => acc + curr.length, 0) ); let offset = 0; for (const byteArray of outByteArrays) { outBytes.set(byteArray, offset); offset += byteArray.length; } FS.writeFile(outputPath, outBytes); HEAPU8[exitCodePtr] = exitCode; wakeUp(allocateUTF8OnStack(outputPath)); }); }); }); }
648648
__asyncjs__js_popen_to_file.sig = 'iiii';
649-
function __asyncjs__wasm_poll_socket(socketd,events,timeout) { return Asyncify.handleAsync(async () => { if (typeof Asyncify === 'undefined') { return 0; } const POLLIN = 0x0001; const POLLPRI = 0x0002; const POLLOUT = 0x0004; const POLLERR = 0x0008; const POLLHUP = 0x0010; const POLLNVAL = 0x0020; return new Promise((wakeUp) => { const polls = []; if (socketd in PHPWASM.child_proc_by_fd) { const procInfo = PHPWASM.child_proc_by_fd[socketd]; if (procInfo.exited) { wakeUp(0); return; } polls.push(PHPWASM.awaitEvent(procInfo.stdout, 'data')); } else if (FS.isSocket(stream.node.mode)) { const sock = getSocketFromFD(socketd); if (!sock) { wakeUp(0); return; } const lookingFor = new Set(); if (events & POLLIN || events & POLLPRI) { if (sock.server) { for (const client of sock.pending) { if ((client.recv_queue || []).length > 0) { wakeUp(1); return; } } } else if ((sock.recv_queue || []).length > 0) { wakeUp(1); return; } } const webSockets = PHPWASM.getAllWebSockets(sock); if (!webSockets.length) { wakeUp(0); return; } for (const ws of webSockets) { if (events & POLLIN || events & POLLPRI) { polls.push(PHPWASM.awaitData(ws)); lookingFor.add('POLLIN'); } if (events & POLLOUT) { polls.push(PHPWASM.awaitConnection(ws)); lookingFor.add('POLLOUT'); } if (events & POLLHUP) { polls.push(PHPWASM.awaitClose(ws)); lookingFor.add('POLLHUP'); } if (events & POLLERR || events & POLLNVAL) { polls.push(PHPWASM.awaitError(ws)); lookingFor.add('POLLERR'); } } } else { wakeUp(0); return; } if (polls.length === 0) { console.warn( 'Unsupported poll event ' + events + ', defaulting to setTimeout().' ); setTimeout(function () { wakeUp(0); }, timeout); return; } const promises = polls.map(([promise]) => promise); const clearPolling = () => polls.forEach(([, clear]) => clear()); let awaken = false; let timeoutId; Promise.race(promises).then(function (results) { if (!awaken) { awaken = true; wakeUp(1); if (timeoutId) { clearTimeout(timeoutId); } clearPolling(); } }); if (timeout !== -1) { timeoutId = setTimeout(function () { if (!awaken) { awaken = true; wakeUp(0); clearPolling(); } }, timeout); } }); }); }
649+
function __asyncjs__wasm_poll_socket(socketd,events,timeout) { return Asyncify.handleAsync(async () => { if (typeof Asyncify === 'undefined') { return 0; } const POLLIN = 0x0001; const POLLPRI = 0x0002; const POLLOUT = 0x0004; const POLLERR = 0x0008; const POLLHUP = 0x0010; const POLLNVAL = 0x0020; return new Promise((wakeUp) => { const polls = []; if (socketd in PHPWASM.child_proc_by_fd) { const procInfo = PHPWASM.child_proc_by_fd[socketd]; if (procInfo.exited) { wakeUp(0); return; } polls.push(PHPWASM.awaitEvent(procInfo.stdout, 'data')); } else if (FS.isSocket(FS.getStream(socketd)?.node.mode)) { const sock = getSocketFromFD(socketd); if (!sock) { wakeUp(0); return; } const lookingFor = new Set(); if (events & POLLIN || events & POLLPRI) { if (sock.server) { for (const client of sock.pending) { if ((client.recv_queue || []).length > 0) { wakeUp(1); return; } } } else if ((sock.recv_queue || []).length > 0) { wakeUp(1); return; } } const webSockets = PHPWASM.getAllWebSockets(sock); if (!webSockets.length) { wakeUp(0); return; } for (const ws of webSockets) { if (events & POLLIN || events & POLLPRI) { polls.push(PHPWASM.awaitData(ws)); lookingFor.add('POLLIN'); } if (events & POLLOUT) { polls.push(PHPWASM.awaitConnection(ws)); lookingFor.add('POLLOUT'); } if (events & POLLHUP) { polls.push(PHPWASM.awaitClose(ws)); lookingFor.add('POLLHUP'); } if (events & POLLERR || events & POLLNVAL) { polls.push(PHPWASM.awaitError(ws)); lookingFor.add('POLLERR'); } } } else { wakeUp(0); return; } if (polls.length === 0) { console.warn( 'Unsupported poll event ' + events + ', defaulting to setTimeout().' ); setTimeout(function () { wakeUp(0); }, timeout); return; } const promises = polls.map(([promise]) => promise); const clearPolling = () => polls.forEach(([, clear]) => clear()); let awaken = false; let timeoutId; Promise.race(promises).then(function (results) { if (!awaken) { awaken = true; wakeUp(1); if (timeoutId) { clearTimeout(timeoutId); } clearPolling(); } }); if (timeout !== -1) { timeoutId = setTimeout(function () { if (!awaken) { awaken = true; wakeUp(0); clearPolling(); } }, timeout); } }); }); }
650650
__asyncjs__wasm_poll_socket.sig = 'iiii';
651-
function __asyncjs__js_fd_read(fd,iovs,iovs_len,nread) { return Asyncify.handleAsync(async () => { var returnCode; var stream; let num = 0; try { stream = SYSCALLS.getStreamFromFD(fd); const num = doReadv(stream, iov, iovcnt); HEAPU32[pnum >> 2] = num; return 0; } catch (e) { if (typeof FS == "undefined" || !(e.name === "ErrnoError")) { throw e; } if (e.errno !== 6 || !(stream?.fd in PHPWASM.child_proc_by_fd)) { HEAPU32[pnum >> 2] = 0; return returnCode } } return new Promise((wakeUp) => { var retries = 0; var interval = 50; var timeout = 5000; var maxRetries = timeout / interval; function poll() { var returnCode; var stream; let num; try { stream = SYSCALLS.getStreamFromFD(fd); num = doReadv(stream, iov, iovcnt); returnCode = 0; } catch (e) { if ( typeof FS == 'undefined' || !(e.name === 'ErrnoError') ) { console.error(e); throw e; } returnCode = e.errno; } const success = returnCode === 0; const failure = ( ++retries > maxRetries || !(fd in PHPWASM.child_proc_by_fd) || PHPWASM.child_proc_by_fd[fd]?.exited || FS.isClosed(stream) ); if (success) { HEAPU32[pnum >> 2] = num; wakeUp(0); } else if (failure) { HEAPU32[pnum >> 2] = 0; wakeUp(returnCode === 6 ? 0 : returnCode); } else { setTimeout(poll, interval); } } poll(); }) }); }
651+
function __asyncjs__js_fd_read(fd,iov,iovcnt,pnum) { return Asyncify.handleAsync(async () => { var returnCode; var stream; let num = 0; try { stream = SYSCALLS.getStreamFromFD(fd); const num = doReadv(stream, iov, iovcnt); HEAPU32[pnum >> 2] = num; return 0; } catch (e) { if (typeof FS == "undefined" || !(e.name === "ErrnoError")) { throw e; } if (e.errno !== 6 || !(stream?.fd in PHPWASM.child_proc_by_fd)) { HEAPU32[pnum >> 2] = 0; return returnCode } } return new Promise((wakeUp) => { var retries = 0; var interval = 50; var timeout = 5000; var maxRetries = timeout / interval; function poll() { var returnCode; var stream; let num; try { stream = SYSCALLS.getStreamFromFD(fd); num = doReadv(stream, iov, iovcnt); returnCode = 0; } catch (e) { if ( typeof FS == 'undefined' || !(e.name === 'ErrnoError') ) { console.error(e); throw e; } returnCode = e.errno; } const success = returnCode === 0; const failure = ( ++retries > maxRetries || !(fd in PHPWASM.child_proc_by_fd) || PHPWASM.child_proc_by_fd[fd]?.exited || FS.isClosed(stream) ); if (success) { HEAPU32[pnum >> 2] = num; wakeUp(0); } else if (failure) { HEAPU32[pnum >> 2] = 0; wakeUp(returnCode === 6 ? 0 : returnCode); } else { setTimeout(poll, interval); } } poll(); }) }); }
652652
__asyncjs__js_fd_read.sig = 'iiiii';
653653

654654
// end include: preamble.js
@@ -6953,7 +6953,8 @@ url = Module["websocket"]["url"](...arguments);
69536953
global.asyncifyFunctions = new Set();
69546954
const originalHandleSleep = Asyncify.handleSleep;
69556955
Asyncify.handleSleep = function (fn) {
6956-
const e = new Error();
6956+
const e = new Error();
6957+
console.error(e.stack);
69576958
global.asyncifyFunctions.add(
69586959
...extractPHPFunctionsFromStack(e.stack)
69596960
);

packages/playground/blueprints/src/lib/steps/enable-multisite.spec.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,10 @@ describe('Blueprint step enableMultisite', () => {
3131
const response = await php.request({
3232
url: '/wp-admin/network/',
3333
});
34+
35+
for (const fn of global.asyncifyFunctions) {
36+
console.log(`"${fn}",`);
37+
}
3438
expect(response.text).toContain('My Sites');
3539
}, 30_000);
3640

0 commit comments

Comments
 (0)