aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWerner Koch <[email protected]>2001-02-01 09:25:56 +0000
committerWerner Koch <[email protected]>2001-02-01 09:25:56 +0000
commit6bbbad60f26b977fee2dcb77e415d0b26f33965d (patch)
treebad685256eb0fcce5a88f74354cad94ab443e3da
parentFixed W32 bugs and one major bug which swallowed up some output. (diff)
downloadgpgme-6bbbad60f26b977fee2dcb77e415d0b26f33965d.tar.gz
gpgme-6bbbad60f26b977fee2dcb77e415d0b26f33965d.zip
Possible fix for NT and segv fix.
Diffstat (limited to '')
-rw-r--r--gpgme/ChangeLog10
-rw-r--r--gpgme/rungpg.c9
-rw-r--r--gpgme/w32-io.c17
3 files changed, 25 insertions, 11 deletions
diff --git a/gpgme/ChangeLog b/gpgme/ChangeLog
index 458b3c97..6b63ca21 100644
--- a/gpgme/ChangeLog
+++ b/gpgme/ChangeLog
@@ -1,6 +1,14 @@
+2001-02-01 Werner Koch <[email protected]>
+
+ * w32-io.c (set_synchronize): Add EVENT_MODIFY_STATE. Add Debug
+ code to all Set/ResetEvent().
+
+ * rungpg.c (read_status): Check for end of stream only if we have
+ an r. By Timo.
+
2001-01-31 Werner Koch <[email protected]>
- * wait.c (_gpgme_wait_on_condition): Remove all exit code processing.
+ * wait.c (_gpgme_wait_on_condition): Removed all exit code processing.
(propagate_term_results,clear_active_fds): Removed.
(count_active_fds): Renamed to ..
(count_active_and_thawed_fds): .. this and count only thawed fds.
diff --git a/gpgme/rungpg.c b/gpgme/rungpg.c
index 5250b565..36b6f799 100644
--- a/gpgme/rungpg.c
+++ b/gpgme/rungpg.c
@@ -1016,10 +1016,11 @@ read_status ( GpgObject gpg )
gpg->status.fnc ( gpg->status.fnc_value,
r->code, rest);
}
- }
- if ( r->code == STATUS_END_STREAM ) {
- if ( gpg->cmd.used )
- _gpgme_freeze_fd ( gpg->cmd.fd );
+
+ if ( r->code == STATUS_END_STREAM ) {
+ if ( gpg->cmd.used )
+ _gpgme_freeze_fd ( gpg->cmd.fd );
+ }
}
}
/* To reuse the buffer for the next line we have to
diff --git a/gpgme/w32-io.c b/gpgme/w32-io.c
index 82e8f819..f0d31a0f 100644
--- a/gpgme/w32-io.c
+++ b/gpgme/w32-io.c
@@ -87,7 +87,7 @@ set_synchronize (HANDLE h)
* way to do it is by duplicating the handle. Tsss.. */
if (!DuplicateHandle( GetCurrentProcess(), h,
GetCurrentProcess(), &tmp,
- SYNCHRONIZE, FALSE, 0 ) ) {
+ EVENT_MODIFY_STATE|SYNCHRONIZE, FALSE, 0 ) ) {
DEBUG1 ("** Set SYNCRONIZE failed: ec=%d\n", (int)GetLastError());
}
else {
@@ -112,7 +112,8 @@ reader (void *arg)
/* leave a one byte gap so that we can see wheter it is empty or full*/
if ((c->writepos + 1) % READBUF_SIZE == c->readpos) {
/* wait for space */
- ResetEvent (c->have_space_ev);
+ if (!ResetEvent (c->have_space_ev) )
+ DEBUG1 ("ResetEvent failed: ec=%d", (int)GetLastError ());
UNLOCK (c->mutex);
DEBUG1 ("reader thread %p: waiting for space ...", c->thread_hd );
WaitForSingleObject (c->have_space_ev, INFINITE);
@@ -149,11 +150,13 @@ reader (void *arg)
LOCK (c->mutex);
c->writepos = (c->writepos + nread) % READBUF_SIZE;
- SetEvent (c->have_data_ev);
+ if ( !SetEvent (c->have_data_ev) )
+ DEBUG1 ("SetEvent failed: ec=%d", (int)GetLastError ());
UNLOCK (c->mutex);
}
/* indicate that we have an error or eof */
- SetEvent (c->have_data_ev);
+ if ( !SetEvent (c->have_data_ev) )
+ DEBUG1 ("SetEvent failed: ec=%d", (int)GetLastError ());
DEBUG1 ("reader thread %p ended", c->thread_hd );
return 0;
@@ -288,9 +291,11 @@ _gpgme_io_read ( int fd, void *buffer, size_t count )
memcpy (buffer, c->buffer+c->readpos, nread);
c->readpos = (c->readpos + nread) % READBUF_SIZE;
if (c->readpos == c->writepos && !c->eof) {
- ResetEvent (c->have_data_ev);
+ if ( !ResetEvent (c->have_data_ev) )
+ DEBUG1 ("ResetEvent failed: ec=%d", (int)GetLastError ());
}
- SetEvent (c->have_space_ev);
+ if (!SetEvent (c->have_space_ev))
+ DEBUG1 ("SetEvent failed: ec=%d", (int)GetLastError ());
UNLOCK (c->mutex);
DEBUG2 ("fd %d: got %d bytes\n", fd, nread );