Re: fix patch for bug 8795

From: Simon Larochelle <larochelle.simon.1_at_gmail.com>
Date: Wed Mar 13 2013 - 15:20:09 CET

Hi Vidhoon,

I tested your patch. Unfortunately, it does not seem to fix the bug. I
still get an extra line with zero width runs (FP_FMTMARK and
FPRUN_ENDOFPARAGRAPH). You should look into modifying the
bRunIsNonBlank test.

Regards,

Simon

On Sun, Mar 10, 2013 at 6:44 PM, Vidh <vidhu2366@gmail.com> wrote:
> Hi all,
>
> I am Vidhoon, a newbie developer at Abiword. :)
> I am looking forward to participate in GSOC 2013.
>
> I worked on bug 8795:
> http://bugzilla.abisource.com/show_bug.cgi?id=8795
>
> I have created a first draft fix patch for the same with some detailed comments.
> I am also copy pasting the patch for easier reference at the end of
> this mail body.
>
> Please provide your valuable suggestions so that I can improve this
> patch and get it merged.
> I could not find any template mails in mailing list archives to send bug fixes.
> So excuse me if I am not following any procedures. Please indicate the
> same and I will oblige.
>
> Pointers to coding conventions (some I was able to note from existing
> code and pick automatically) are also welcome to improve on this first
> draft patch.
>
> Index: text/fmt/xp/fb_LineBreaker.cpp
> ===================================================================
> --- text/fmt/xp/fb_LineBreaker.cpp (revision 32687)
> +++ text/fmt/xp/fb_LineBreaker.cpp (working copy)
> @@ -37,7 +37,8 @@
> m_pFirstRunToKeep(NULL),
> m_pLastRunToKeep(NULL),
> m_iMaxLineWidth(0),
> - m_iWorkingLineWidth(0)
> + m_iWorkingLineWidth(0),
> + m_iTrailingSpace(-1)
> {
> xxx_UT_DEBUGMSG(("fb_LineBreaker %x created \n",this));
> }
> @@ -630,7 +631,7 @@
> UT_ASSERT(pNewLine); // TODO check for outofmem
> pNextLine = pNewLine;
> m_iMaxLineWidth = pNextLine->getMaxWidth();
> - xxx_UT_DEBUGMSG(("!!!! Generated a new Line \n"));
> + xxx_UT_DEBUGMSG(("!!!! Generated a new Line \n"));
> }
> else
> {
> @@ -648,7 +649,43 @@
> while (pRunToBump && pLine->getNumRunsInLine() &&
> (pLine->getLastRun() != m_pLastRunToKeep))
> {
> UT_ASSERT(pRunToBump->getLine() == pLine);
> - xxx_UT_DEBUGMSG(("RunToBump %x Type %d Offset %d Length %d
> \n",pRunToBump,pRunToBump->getType(),pRunToBump->getBlockOffset(),pRunToBump->getLength()));
> + if(pRunToBump->getType() == FPRUN_ENDOFPARAGRAPH )
> + {
> + xxx_UT_DEBUGMSG(("Trailing space present in prev run
> %d\n",pRunToBump->getPrevRun()->findTrailingSpaceDistance()));
> +/*
> +FIX for bug 8795
> +================
> +if EOP then
> + if prev run has trailing white space then
> + 1)store actual trailing space
> + 2)delay run bump till trailing space is exhausted
> + else
> + bump contents into newline
> +*/
> +
> +
> if(pRunToBump->getPrevRun()->findTrailingSpaceDistance())
> + {
> + if(m_iTrailingSpace == -1)
> + {
> + xxx_UT_DEBUGMSG(("backing up trailing space"));
> + m_iTrailingSpace = pRunToBump->getPrevRun()->findTrailingSpaceDistance();
> + }
> + if(pLine->getFilledWidth() - m_iTrailingSpace < m_iMaxLineWidth)
> + {
> + xxx_UT_DEBUGMSG(("Filledwidth %d TrailingSpace %d FW-TS %d
> MaxWidth %d",pLine->getFilledWidth(),m_iTrailingSpace,pLine->getFilledWidth()
> - m_iTrailingSpace, m_iMaxLineWidth));
> + break;
> + }
> + else
> + {
> + xxx_UT_DEBUGMSG(("trailing space over.. should now start newline"));
> + m_iTrailingSpace = -1;
> + }
> + }
> +
> +
> + }
> +
> + UT_DEBUGMSG(("RunToBump %x Type %d Offset %d Length %d
> \n",pRunToBump,pRunToBump->getType(),pRunToBump->getBlockOffset(),pRunToBump->getLength()));
> if(!pLine->removeRun(pRunToBump))
> {
> //
> @@ -673,8 +710,12 @@
> xxx_UT_DEBUGMSG(("Next runToBump %x \n",pRunToBump));
> }
> }
> -
> - UT_ASSERT((!m_pLastRunToKeep) || (pLine->getLastRun() == m_pLastRunToKeep));
> +/*
> +below assert not applicable now since when trailing space
> +is present the current line is not broken immediately and
> +delayed till trailing space is exhausted by non blank characters
> +*/
> + //UT_ASSERT((!m_pLastRunToKeep) || (pLine->getLastRun() ==
> m_pLastRunToKeep));
> #if DEBUG
> pLine->assertLineListIntegrity();
> if(pNextLine)
> Index: text/fmt/xp/fb_LineBreaker.h
> ===================================================================
> --- text/fmt/xp/fb_LineBreaker.h (revision 32687)
> +++ text/fmt/xp/fb_LineBreaker.h (working copy)
> @@ -54,6 +54,7 @@
>
> UT_sint32 m_iMaxLineWidth;
> UT_sint32 m_iWorkingLineWidth;
> + UT_sint32 m_iTrailingSpace;
> };
>
> #endif /* FB_LINEBREAKER_H */
>
>
> regards,
> --
> Vidhoon Viswanathan
> +91 7760711773
Received on Wed Mar 13 15:20:23 2013

This archive was generated by hypermail 2.1.8 : Wed Mar 13 2013 - 15:20:23 CET