[gmime] Fixed html filter to convert last line even if it doesn't end with a \n



commit f6e4705af82328fef61eabd5dd8a8d1424743758
Author: Jeffrey Stedfast <fejj gnome org>
Date:   Tue Feb 19 09:37:25 2013 -0500

    Fixed html filter to convert last line even if it doesn't end with a \n
    
    2013-02-19  Jeffrey Stedfast  <fejj gnome org>
    
        * gmime/gmime-filter-html.c (html_convert): Fixed to convert the
        last line of input even if it doesn't end with a \n.

 ChangeLog                 |    5 +++++
 gmime/gmime-filter-html.c |   25 +++++++++++--------------
 2 files changed, 16 insertions(+), 14 deletions(-)
---
diff --git a/ChangeLog b/ChangeLog
index 3a333b6..88b9859 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2013-02-19  Jeffrey Stedfast  <fejj gnome org>
+
+       * gmime/gmime-filter-html.c (html_convert): Fixed to convert the
+       last line of input even if it doesn't end with a \n.
+
 2013-02-18  Jeffrey Stedfast  <fejj gnome org>
 
        * README: Bumped version
diff --git a/gmime/gmime-filter-html.c b/gmime/gmime-filter-html.c
index 9a00fb0..75c0fc1 100644
--- a/gmime/gmime-filter-html.c
+++ b/gmime/gmime-filter-html.c
@@ -321,7 +321,7 @@ html_convert (GMimeFilter *filter, char *in, size_t inlen, size_t prespace,
        
        g_mime_filter_set_size (filter, inlen * 2 + 6, FALSE);
        
-       inptr = in;
+       start = inptr = in;
        inend = in + inlen;
        outptr = filter->outbuf;
        outend = filter->outbuf + filter->outsize;
@@ -331,11 +331,13 @@ html_convert (GMimeFilter *filter, char *in, size_t inlen, size_t prespace,
                html->pre_open = TRUE;
        }
        
-       start = inptr;
-       while (inptr < inend && *inptr != '\n')
-               inptr++;
-       
-       while (inptr < inend) {
+       do {
+               while (inptr < inend && *inptr != '\n')
+                       inptr++;
+               
+               if (inptr == inend && !flush)
+                       break;
+               
                html->column = 0;
                depth = 0;
                
@@ -416,18 +418,13 @@ html_convert (GMimeFilter *filter, char *in, size_t inlen, size_t prespace,
                        outptr = g_stpcpy (outptr, "<br>");
                }
                
-               *outptr++ = '\n';
+               if (inptr < inend)
+                       *outptr++ = '\n';
                
                start = ++inptr;
-               while (inptr < inend && *inptr != '\n')
-                       inptr++;
-       }
+       } while (inptr < inend);
        
        if (flush) {
-               /* flush the rest of our input buffer */
-               if (start < inend)
-                       outptr = writeln (filter, start, inend, outptr, &outend);
-               
                if (html->pre_open) {
                        /* close the pre-tag */
                        outptr = check_size (filter, outptr, &outend, 10);


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]