summaryrefslogtreecommitdiff
path: root/package/rpm/patches/patch-rpmio_rpmsq_c.orig
diff options
context:
space:
mode:
Diffstat (limited to 'package/rpm/patches/patch-rpmio_rpmsq_c.orig')
-rw-r--r--package/rpm/patches/patch-rpmio_rpmsq_c.orig30
1 files changed, 30 insertions, 0 deletions
diff --git a/package/rpm/patches/patch-rpmio_rpmsq_c.orig b/package/rpm/patches/patch-rpmio_rpmsq_c.orig
new file mode 100644
index 000000000..c192ed276
--- /dev/null
+++ b/package/rpm/patches/patch-rpmio_rpmsq_c.orig
@@ -0,0 +1,30 @@
+--- rpm-4.7.0.orig/rpmio/rpmsq.c 2009-03-03 07:51:52.000000000 +0100
++++ rpm-4.7.0/rpmio/rpmsq.c 2009-06-25 20:02:58.903020248 +0200
+@@ -115,6 +115,7 @@ fprintf(stderr, " Insert(%p): %p\n",
+ */
+ static int rpmsqRemove(void * elem)
+ {
++ sigset_t new_set, old_set;
+ rpmsq sq = (rpmsq) elem;
+ int ret = -1;
+
+@@ -124,7 +125,9 @@ static int rpmsqRemove(void * elem)
+ if (_rpmsq_debug)
+ fprintf(stderr, " Remove(%p): %p\n", ME(), sq);
+ #endif
+- ret = sighold (SIGCHLD);
++ sigemptyset( &new_set );
++ sigaddset( &new_set, SIGCHLD );
++ ret = sigprocmask(SIG_BLOCK, &new_set, &old_set);
+ if (ret == 0) {
+ remque(elem);
+
+@@ -142,7 +145,7 @@ fprintf(stderr, " Remove(%p): %p\n",
+ sq->reaped = 0;
+ sq->child = 0;
+ #endif
+- ret = sigrelse(SIGCHLD);
++ ret = sigprocmask( SIG_SETMASK, &old_set, NULL );
+ }
+ }
+ return ret;