Author: bdubbs Date: 2010-05-07 19:16:13 -0600 (Fri, 07 May 2010) New Revision: 2193
Added: trunk/man-db/man-db-2.5.7-fix_man_assertion-1.patch Log: Fixes the assertion error when Man-DB tries to display certan man pages Added: trunk/man-db/man-db-2.5.7-fix_man_assertion-1.patch =================================================================== --- trunk/man-db/man-db-2.5.7-fix_man_assertion-1.patch (rev 0) +++ trunk/man-db/man-db-2.5.7-fix_man_assertion-1.patch 2010-05-08 01:16:13 UTC (rev 2193) @@ -0,0 +1,137 @@ +Submited by: William Immendorf <[email protected]> +Date: 2010-05-07 +Inital Package Version: 2.5.7 +Origin: Upstream commit 1199, http://bazaar.launchpad.net/~cjwatson/man-db/trunk/revision/1199 +Upstream Status: From Upstream Bazaar + +Description: This fixes a issue in when you try to view certan man pages with +man (I've seen this happen with ifort's man page, this acually happend to me +when I was trying to test out various forigen language man pages), man errors +out with this message: + +man: man.c:2393: display: Assertion `decomp->ncommands == 1' failed. Aborted +Aborted + +and then quits. This is a issue specific to Man-DB-2.5.7, 2.5.6 diddn't have +this issue. This is a well known issue and will be fixed with the release of +Man-DB-2.5.8. + +diff -Naur man-db-2.5.7.orig/lib/pipeline.c man-db-2.5.7/lib/pipeline.c +--- man-db-2.5.7.orig/lib/pipeline.c 2010-05-07 19:31:50.784188731 -0500 ++++ man-db-2.5.7/lib/pipeline.c 2010-05-07 19:32:45.275061944 -0500 +@@ -329,6 +329,25 @@ + return cmd; + } + ++static void passthrough (void *data ATTRIBUTE_UNUSED) ++{ ++ for (;;) { ++ char buffer[4096]; ++ int r = read (STDIN_FILENO, buffer, 4096); ++ if (r <= 0) ++ break; ++ if (fwrite (buffer, 1, (size_t) r, stdout) < (size_t) r) ++ break; ++ } ++ ++ return; ++} ++ ++command *command_new_passthrough (void) ++{ ++ return command_new_function ("cat", &passthrough, NULL, NULL); ++} ++ + command *command_dup (command *cmd) + { + command *newcmd = XMALLOC (command); +@@ -831,20 +850,6 @@ + return p; + } + +-static void passthrough (void *data ATTRIBUTE_UNUSED) +-{ +- for (;;) { +- char buffer[4096]; +- int r = read (STDIN_FILENO, buffer, 4096); +- if (r <= 0) +- break; +- if (fwrite (buffer, 1, (size_t) r, stdout) < (size_t) r) +- break; +- } +- +- return; +-} +- + void pipeline_connect (pipeline *source, pipeline *sink, ...) + { + va_list argv; +@@ -876,11 +881,8 @@ + * because it has nowhere to send output. Until this is + * fixed, this kludge is necessary. + */ +- if (arg->ncommands == 0) { +- command *cmd = command_new_function +- ("cat", &passthrough, NULL, NULL); +- pipeline_command (arg, cmd); +- } ++ if (arg->ncommands == 0) ++ pipeline_command (arg, command_new_passthrough ()); + } + va_end (argv); + } +diff -Naur man-db-2.5.7.orig/lib/pipeline.h man-db-2.5.7/lib/pipeline.h +--- man-db-2.5.7.orig/lib/pipeline.h 2010-05-07 19:31:50.785191356 -0500 ++++ man-db-2.5.7/lib/pipeline.h 2010-05-07 19:32:45.275061944 -0500 +@@ -172,6 +172,9 @@ + */ + command *command_new_sequence (const char *name, ...) ATTRIBUTE_SENTINEL; + ++/* Return a new command that just passes data from its input to its output. */ ++command *command_new_passthrough (void); ++ + /* Return a duplicate of a command. */ + command *command_dup (command *cmd); + +diff -Naur man-db-2.5.7.orig/NEWS man-db-2.5.7/NEWS +--- man-db-2.5.7.orig/NEWS 2010-05-07 19:31:50.779187160 -0500 ++++ man-db-2.5.7/NEWS 2010-05-07 19:32:45.275061944 -0500 +@@ -1,3 +1,15 @@ ++man-db 2.5.8 ++============ ++ ++Major changes since man-db 2.5.7: ++ ++ Fixes: ++ ------ ++ ++ o Fix assertion failure on 'man -l' with an uncompressed page and ++ any of --no-hyphenation, --no-justification, or a non-English ++ page. ++ + man-db 2.5.7 (16 February 2010) + =============================== + +diff -Naur man-db-2.5.7.orig/src/man.c man-db-2.5.7/src/man.c +--- man-db-2.5.7.orig/src/man.c 2010-05-07 19:31:50.746062788 -0500 ++++ man-db-2.5.7/src/man.c 2010-05-07 19:32:45.277061513 -0500 +@@ -2390,9 +2390,16 @@ + #endif /* TROFF_IS_GROFF */ + + if (seq->u.sequence.ncommands) { +- assert (decomp->ncommands == 1); +- command_sequence_command (seq, decomp->commands[0]); +- decomp->commands[0] = seq; ++ assert (decomp->ncommands <= 1); ++ if (decomp->ncommands) { ++ command_sequence_command ++ (seq, decomp->commands[0]); ++ decomp->commands[0] = seq; ++ } else { ++ command_sequence_command ++ (seq, command_new_passthrough ()); ++ pipeline_command (decomp, seq); ++ } + } else + command_free (seq); + } -- http://linuxfromscratch.org/mailman/listinfo/patches FAQ: http://www.linuxfromscratch.org/faq/ Unsubscribe: See the above information page
