backtrace: show error if pipe fails YAZ-805
authorAdam Dickmeiss <adam@indexdata.dk>
Wed, 10 Dec 2014 10:35:35 +0000 (11:35 +0100)
committerAdam Dickmeiss <adam@indexdata.dk>
Wed, 10 Dec 2014 10:35:35 +0000 (11:35 +0100)
src/backtrace.c

index 76e890f..6bc22bf 100644 (file)
@@ -54,11 +54,16 @@ static void yaz_invoke_backtrace(char *buf, int buf_sz)
     sz = backtrace(backtrace_info, sz);
     backtrace_symbols_fd(backtrace_info, sz, fd);
 
     sz = backtrace(backtrace_info, sz);
     backtrace_symbols_fd(backtrace_info, sz, fd);
 
-    pipe(fds);
+    if (pipe(fds) == -1)
+    {
+        const char *cp = "backtrace: pipe failed\n";
+        write(fd, cp, strlen(cp));
+        return;
+    }
     pid = fork();
     if (pid == (pid_t) (-1))
     {   /* error */
     pid = fork();
     if (pid == (pid_t) (-1))
     {   /* error */
-        const char *cp = "backtrace: fork failure";
+        const char *cp = "backtrace: fork failure\n";
         write(fd, cp, strlen(cp));
     }
     else if (pid == 0)
         write(fd, cp, strlen(cp));
     }
     else if (pid == 0)