Hello community,

here is the log from the commit of package enigmail for openSUSE:Factory 
checked in at 2017-07-10 11:07:49
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/enigmail (Old)
 and      /work/SRC/openSUSE:Factory/.enigmail.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "enigmail"

Mon Jul 10 11:07:49 2017 rev:16 rq:509037 version:1.9.8.1

Changes:
--------
--- /work/SRC/openSUSE:Factory/enigmail/enigmail.changes        2017-07-06 
00:04:31.340808085 +0200
+++ /work/SRC/openSUSE:Factory/.enigmail.new/enigmail.changes   2017-07-10 
11:07:49.748526521 +0200
@@ -1,0 +2,6 @@
+Sun Jul  9 14:43:40 UTC 2017 - [email protected]
+
+- enigmail 1.9.8.1:
+  * handle EINTR cases of child process terminations 
+
+-------------------------------------------------------------------

Old:
----
  enigmail-1.9.8.tar.gz
  enigmail-1.9.8.tar.gz.asc

New:
----
  enigmail-1.9.8.1.tar.gz
  enigmail-1.9.8.1.tar.gz.asc

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ enigmail.spec ++++++
--- /var/tmp/diff_new_pack.HMqEn6/_old  2017-07-10 11:07:50.420431636 +0200
+++ /var/tmp/diff_new_pack.HMqEn6/_new  2017-07-10 11:07:50.420431636 +0200
@@ -18,7 +18,7 @@
 
 
 Name:           enigmail
-Version:        1.9.8
+Version:        1.9.8.1
 Release:        0
 Summary:        OpenPGP addon for Thunderbird and SeaMonkey
 License:        MPL-2.0

++++++ enigmail-1.9.8.tar.gz -> enigmail-1.9.8.1.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/enigmail/Makefile new/enigmail/Makefile
--- old/enigmail/Makefile       2017-06-29 17:08:17.000000000 +0200
+++ new/enigmail/Makefile       2017-07-08 10:16:24.000000000 +0200
@@ -3,7 +3,7 @@
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 XPI_MODULE     = enigmail
-XPI_MODULE_VERS = 1.9.8
+XPI_MODULE_VERS = 1.9.8.1
 
 DEPTH          = .
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/enigmail/ipc/modules/enigmailprocess_shared_win.js 
new/enigmail/ipc/modules/enigmailprocess_shared_win.js
--- old/enigmail/ipc/modules/enigmailprocess_shared_win.js      2017-06-29 
17:08:17.000000000 +0200
+++ new/enigmail/ipc/modules/enigmailprocess_shared_win.js      2017-07-08 
10:16:24.000000000 +0200
@@ -69,6 +69,8 @@
 });
 
 Object.assign(win32, {
+  INVALID_HANDLE_VALUE: ctypes.cast(ctypes.int64_t(-1), win32.HANDLE),
+  NULL_HANDLE_VALUE: ctypes.cast(ctypes.uintptr_t(0), win32.HANDLE),
   CREATE_SUSPENDED: 0x00000004,
   CREATE_NEW_CONSOLE: 0x00000010,
   CREATE_UNICODE_ENVIRONMENT: 0x00000400,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/enigmail/ipc/modules/enigmailprocess_worker_unix.js 
new/enigmail/ipc/modules/enigmailprocess_worker_unix.js
--- old/enigmail/ipc/modules/enigmailprocess_worker_unix.js     2017-06-29 
17:08:17.000000000 +0200
+++ new/enigmail/ipc/modules/enigmailprocess_worker_unix.js     2017-07-08 
10:16:24.000000000 +0200
@@ -488,22 +488,29 @@
     let status = ctypes.int();
 
     let res = libc.waitpid(this.pid, status.address(), LIBC.WNOHANG);
-    if (res == this.pid) {
-      let sig = unix.WTERMSIG(status.value);
-      if (sig) {
-        this.exitCode = -sig;
-      }
-      else {
-        this.exitCode = unix.WEXITSTATUS(status.value);
-      }
-
-      this.fd.dispose();
-      io.updatePollFds();
-      this.resolveExit(this.exitCode);
-      return this.exitCode;
-    }
-    else
+
+    const EINTR = 4; // TODO: change to LIBC.EINTR with TB 59
+
+    // If there's a failure here and we get any errno other than EINTR, it
+    // means that the process has been reaped by another thread (most likely
+    // the nspr process wait thread), and its actual exit status is not
+    // available to us. In that case, we have to assume success.
+    if (res == 0 || (res == -1 && ctypes.errno == EINTR)) {
       return null;
+    }
+
+    let sig = unix.WTERMSIG(status.value);
+    if (sig) {
+      this.exitCode = -sig;
+    }
+    else {
+      this.exitCode = unix.WEXITSTATUS(status.value);
+    }
+
+    this.fd.dispose();
+    io.updatePollFds();
+    this.resolveExit(this.exitCode);
+    return this.exitCode;
   }
 }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/enigmail/ipc/modules/enigmailprocess_worker_win.js 
new/enigmail/ipc/modules/enigmailprocess_worker_win.js
--- old/enigmail/ipc/modules/enigmailprocess_worker_win.js      2017-06-29 
17:08:17.000000000 +0200
+++ new/enigmail/ipc/modules/enigmailprocess_worker_win.js      2017-07-08 
10:16:24.000000000 +0200
@@ -406,14 +406,22 @@
         srcHandle = libc.GetStdHandle(win32.STD_ERROR_HANDLE);
       }
 
-      let handle = win32.HANDLE();
+      // If we don't have a valid stderr handle, just pass it along without 
duplicating.
+      if (String(srcHandle) == win32.INVALID_HANDLE_VALUE ||
+        String(srcHandle) == win32.NULL_HANDLE_VALUE) {
+        their_pipes[2] = srcHandle;
+      }
+      else {
+
+        let handle = win32.HANDLE();
 
-      let curProc = libc.GetCurrentProcess();
-      let ok = libc.DuplicateHandle(curProc, srcHandle, curProc, 
handle.address(),
-        0, true /* inheritable */ ,
-        win32.DUPLICATE_SAME_ACCESS);
+        let curProc = libc.GetCurrentProcess();
+        let ok = libc.DuplicateHandle(curProc, srcHandle, curProc, 
handle.address(),
+          0, true /* inheritable */ ,
+          win32.DUPLICATE_SAME_ACCESS);
 
-      their_pipes[2] = ok && win32.Handle(handle);
+        their_pipes[2] = ok && win32.Handle(handle);
+      }
     }
 
     if (!their_pipes.every(handle => handle)) {
@@ -478,7 +486,7 @@
       args = args.map(arg => this.quoteString(arg));
     }
 
-    if (/\.bat$/i.test(command)) {
+    if (/\.(bat|cmd)$/i.test(command)) {
       command = io.comspec;
       args = ["cmd.exe", "/s/c", `"${args.join(" ")}"`];
     }
@@ -529,7 +537,10 @@
       procInfo.address());
 
     for (let handle of new Set(handles)) {
-      handle.dispose();
+      // If any of our handles are invalid, they don't have finalizers.
+      if (handle && handle.dispose) {
+        handle.dispose();
+      }
     }
 
     if (threadAttrs) {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/enigmail/ipc/modules/subprocess.jsm 
new/enigmail/ipc/modules/subprocess.jsm
--- old/enigmail/ipc/modules/subprocess.jsm     2017-06-29 17:08:17.000000000 
+0200
+++ new/enigmail/ipc/modules/subprocess.jsm     2017-07-08 10:16:24.000000000 
+0200
@@ -249,6 +249,7 @@
         .then(() => proc.wait())
         .then(result => {
           DEBUG_LOG("Complete: " + result.exitCode + "\n");
+          if (result.exitCode === null) result.exitCode = -1;
           resolved = result.exitCode;
           if (typeof options.done === "function") {
             try {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/enigmail/package/install.rdf 
new/enigmail/package/install.rdf
--- old/enigmail/package/install.rdf    2017-06-29 17:08:17.000000000 +0200
+++ new/enigmail/package/install.rdf    2017-07-08 10:16:24.000000000 +0200
@@ -5,7 +5,7 @@
 
   <Description about="urn:mozilla:install-manifest">
     <em:id>{847b3a00-7ab1-11d4-8f02-006008948af5}</em:id>
-    <em:version>1.9.8</em:version>
+    <em:version>1.9.8.1</em:version>
     <em:type>2</em:type> <!-- type = extension -->
     <em:unpack>true</em:unpack>
 



Reply via email to