summaryrefslogtreecommitdiff
path: root/sapi/phpdbg/phpdbg_sigio_win32.c
diff options
context:
space:
mode:
authorBob Weinand <bobwei9@hotmail.com>2014-10-27 13:11:13 +0100
committerBob Weinand <bobwei9@hotmail.com>2014-10-27 13:11:13 +0100
commit6eab2b910120e0ff5f0cdbbeac9be02e13312497 (patch)
tree08d7517c71e5726cda6cb3b5f9cfd37f900f6b5d /sapi/phpdbg/phpdbg_sigio_win32.c
parentcc91072f0ef69b5884f23eb758ef6e12e8858034 (diff)
parentb4db856d374d0df47e902b65639ab9a06346aa8a (diff)
downloadphp-git-6eab2b910120e0ff5f0cdbbeac9be02e13312497.tar.gz
Merge phpdbg into PHP-5.6
Conflicts: sapi/phpdbg/phpdbg.c sapi/phpdbg/phpdbg_prompt.c
Diffstat (limited to 'sapi/phpdbg/phpdbg_sigio_win32.c')
-rw-r--r--sapi/phpdbg/phpdbg_sigio_win32.c25
1 files changed, 11 insertions, 14 deletions
diff --git a/sapi/phpdbg/phpdbg_sigio_win32.c b/sapi/phpdbg/phpdbg_sigio_win32.c
index 24e9ac0e0a..158e034872 100644
--- a/sapi/phpdbg/phpdbg_sigio_win32.c
+++ b/sapi/phpdbg/phpdbg_sigio_win32.c
@@ -33,30 +33,31 @@ SigIoWatcherThread(VOID *p)
struct win32_sigio_watcher_data *swd = (struct win32_sigio_watcher_data *)p;
#ifdef ZTS
void ***tsrm_ls = swd->tsrm_ls;
-top:
- (void)phpdbg_consume_bytes(swd->fd, &sig, 1, -1, tsrm_ls);
-#else
-top:
- (void)phpdbg_consume_bytes(swd->fd, &sig, 1, -1);
#endif
+top:
+ (void)phpdbg_consume_bytes(swd->fd, &sig, 1, -1 TSRMLS_CC);
+
if (3 == sig) {
- printf("signaled, got %d", sig);
/* XXX completely not sure it is done right here */
- if (swd->flags & PHPDBG_IS_INTERACTIVE) {
+ if (PHPDBG_G(flags) & PHPDBG_IS_INTERACTIVE) {
if (raise(sig)) {
- /* just out*/
- exit(0);
+ goto top;
}
}
- if (swd->flags & PHPDBG_IS_SIGNALED) {
+ if (PHPDBG_G(flags) & PHPDBG_IS_SIGNALED) {
phpdbg_set_sigsafe_mem(&sig TSRMLS_CC);
zend_try {
phpdbg_force_interruption(TSRMLS_C);
} zend_end_try();
phpdbg_clear_sigsafe_mem(TSRMLS_C);
+ goto end;
+ }
+ if (!(PHPDBG_G(flags) & PHPDBG_IS_INTERACTIVE)) {
+ PHPDBG_G(flags) |= PHPDBG_IS_SIGNALED;
}
+end:
/* XXX set signaled flag to the caller thread, question is - whether it's needed */
ExitThread(sig);
} else {
@@ -74,8 +75,6 @@ sigio_watcher_start(void)
TSRMLS_FETCH();
PHPDBG_G(swd).fd = PHPDBG_G(io)[PHPDBG_STDIN].fd;
- PHPDBG_G(swd).running = 1;
- PHPDBG_G(swd).flags = PHPDBG_G(flags);
#ifdef ZTS
PHPDBG_G(swd).tsrm_ls = tsrm_ls;
#endif
@@ -113,8 +112,6 @@ sigio_watcher_stop(void)
}
PHPDBG_G(swd).fd = -1;
- PHPDBG_G(swd).running = 0;
- PHPDBG_G(swd).flags = 0;
PHPDBG_G(sigio_watcher_thread) = INVALID_HANDLE_VALUE;
}