[gmime/gmime-2-6] Slight parser optimization and additional check



commit 8a58f0396a5424f2d2ec55334a960aa0e0be60bb
Author: Jeffrey Stedfast <jestedfa microsoft com>
Date:   Sun Mar 19 09:49:17 2017 -0400

    Slight parser optimization and additional check
    
    The additional check makes sure that 'aligned'
    doesn't happen to fall on a '\n' character.

 gmime/gmime-parser.c |   10 ++++++++--
 1 files changed, 8 insertions(+), 2 deletions(-)
---
diff --git a/gmime/gmime-parser.c b/gmime/gmime-parser.c
index 2cff709..58589f2 100644
--- a/gmime/gmime-parser.c
+++ b/gmime/gmime-parser.c
@@ -1468,6 +1468,7 @@ parser_scan_content (GMimeParser *parser, GByteArray *content, guint *crlf)
        size_t atleast;
        int found = 0;
        int mask;
+       char c;
        
        d(printf ("scan-content\n"));
        
@@ -1505,10 +1506,15 @@ parser_scan_content (GMimeParser *parser, GByteArray *content, guint *crlf)
                        start = inptr;
                        
                        /* Note: see optimization comment [1] */
-                       while (inptr < aligned && *inptr != '\n')
+                       c = *aligned;
+                       *aligned = '\n';
+                       
+                       while (*inptr != '\n')
                                inptr++;
                        
-                       if (inptr == aligned) {
+                       *aligned = c;
+                       
+                       if (inptr == aligned && c != '\n') {
                                dword = (int *) inptr;
                                
                                do {


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