[gs-bugs] [Bug 690283] New: printing multiple xps files causes hangup during cleanup

bugs.ghostscript.com-bugzilla-daemon at ghostscript.com bugs.ghostscript.com-bugzilla-daemon at ghostscript.com
Wed Feb 11 01:08:17 PST 2009


http://bugs.ghostscript.com/show_bug.cgi?id=690283

           Summary: printing multiple xps files causes hangup during cleanup
           Product: GhostXPS
           Version: 1.54
          Platform: PC
        OS/Version: All
            Status: NEW
          Severity: normal
          Priority: P4
         Component: General
        AssignedTo: tor.andersson at artifex.com
        ReportedBy: norbert.janssen at oce.com
         QAContact: gs-bugs at ghostscript.com


When printing multiple xps files (AC8Z11MS-MXDW.xps from Quality Logic), this
eventually caused a hangup in xpstop.c::xps_imp_dnit_job().
I traced it down to looping (round-robin) in  the "Free XPS parsing stuff",
caused by not setting ctx->first_part = NULL; after freeing all parts.
So the fix for me is:
    /* Free XPS parsing stuff */
    {
	xps_part_t *part = ctx->first_part;
	while (part)
	{
	    xps_part_t *next = part->next;
	    xps_free_part(ctx, part);
	    part = next;
	}
	ctx->first_part = NULL;         /* FIX: reset first_part */

	xps_free_fixed_pages(ctx);
	xps_free_fixed_documents(ctx);


Similar fix in xpsdoc.c::xps_free_used_parts()

void
xps_free_used_parts(xps_context_t *ctx)
{
    /* TODO: actually do what we should. for now we just free cached resources. */
    xps_part_t *part = ctx->first_part;
    while (part)
    {
	xps_part_t *next = part->next;
	xps_free_part_caches(ctx, part);
	part = next;
    }
    ctx->first_part = NULL;   /* FIX: reset first_part */
}



------- You are receiving this mail because: -------
You are the QA contact for the bug, or are watching the QA contact.



More information about the gs-bugs mailing list