[geany/geany] 433580: Merge branch 'mio/update'

Colomban Wendling git-noreply at xxxxx
Sun Oct 25 15:09:21 UTC 2015


Branch:      refs/heads/master
Author:      Colomban Wendling <ban at herbesfolles.org>
Committer:   Colomban Wendling <ban at herbesfolles.org>
Date:        Sun, 25 Oct 2015 15:09:21 UTC
Commit:      4335804d236bd43d7545a48272fd313adc36ce1f
             https://github.com/geany/geany/commit/4335804d236bd43d7545a48272fd313adc36ce1f

Log Message:
-----------
Merge branch 'mio/update'

Manually import some upstream MIO changes.


Modified Paths:
--------------
    tagmanager/mio/mio-file.c
    tagmanager/mio/mio-memory.c
    tagmanager/mio/mio.h

Modified: tagmanager/mio/mio-file.c
1 lines changed, 1 insertions(+), 0 deletions(-)
===================================================================
@@ -92,6 +92,7 @@ file_puts (MIO          *mio,
   return fputs (s, mio->impl.file.fp);
 }
 
+G_GNUC_PRINTF (2, 0)
 static gint
 file_vprintf (MIO         *mio,
               const gchar *format,


Modified: tagmanager/mio/mio-memory.c
41 lines changed, 21 insertions(+), 20 deletions(-)
===================================================================
@@ -73,34 +73,34 @@ mem_free (MIO *mio)
 
 static gsize
 mem_read (MIO    *mio,
-          void   *ptr,
+          void   *ptr_,
           gsize   size,
           gsize   nmemb)
 {
   gsize n_read = 0;
   
   if (size != 0 && nmemb != 0) {
-    if (mio->impl.mem.ungetch != EOF) {
-      *((guchar *)ptr) = (guchar)mio->impl.mem.ungetch;
-      mio->impl.mem.ungetch = EOF;
-      mio->impl.mem.pos++;
-      if (size == 1) {
-        n_read++;
-      } else if (mio->impl.mem.pos + (size - 1) <= mio->impl.mem.size) {
-        memcpy (&(((guchar *)ptr)[1]),
-                &mio->impl.mem.buf[mio->impl.mem.pos], size - 1);
-        mio->impl.mem.pos += size - 1;
-        n_read++;
-      }
+    gsize   size_avail  = mio->impl.mem.size - mio->impl.mem.pos;
+    gsize   copy_bytes  = size * nmemb;
+    guchar *ptr         = ptr_;
+    
+    if (size_avail < copy_bytes) {
+      copy_bytes = size_avail;
     }
-    for (; n_read < nmemb; n_read++) {
-      if (mio->impl.mem.pos + size > mio->impl.mem.size) {
-        break;
-      } else {
-        memcpy (&(((guchar *)ptr)[n_read * size]),
-                &mio->impl.mem.buf[mio->impl.mem.pos], size);
-        mio->impl.mem.pos += size;
+    
+    if (copy_bytes > 0) {
+      n_read = copy_bytes / size;
+      
+      if (mio->impl.mem.ungetch != EOF) {
+        *ptr = (guchar) mio->impl.mem.ungetch;
+        mio->impl.mem.ungetch = EOF;
+        copy_bytes--;
+        mio->impl.mem.pos++;
+        ptr++;
       }
+      
+      memcpy (ptr, &mio->impl.mem.buf[mio->impl.mem.pos], copy_bytes);
+      mio->impl.mem.pos += copy_bytes;
     }
     if (mio->impl.mem.pos >= mio->impl.mem.size) {
       mio->impl.mem.eof = TRUE;
@@ -241,6 +241,7 @@ mem_puts (MIO          *mio,
   return rv;
 }
 
+G_GNUC_PRINTF (2, 0)
 static gint
 mem_vprintf (MIO         *mio,
              const gchar *format,


Modified: tagmanager/mio/mio.h
4 lines changed, 2 insertions(+), 2 deletions(-)
===================================================================
@@ -145,7 +145,7 @@ struct _MIO {
                          const gchar *s);
   gint    (*v_vprintf)  (MIO         *mio,
                          const gchar *format,
-                         va_list      ap);
+                         va_list      ap) G_GNUC_PRINTF (2, 0);
   void    (*v_clearerr) (MIO *mio);
   gint    (*v_eof)      (MIO *mio);
   gint    (*v_error)    (MIO *mio);
@@ -198,7 +198,7 @@ gint        mio_puts                (MIO         *mio,
 
 gint        mio_vprintf             (MIO         *mio,
                                      const gchar *format,
-                                     va_list      ap);
+                                     va_list      ap) G_GNUC_PRINTF (2, 0);
 gint        mio_printf              (MIO         *mio,
                                      const gchar *format,
                                      ...) G_GNUC_PRINTF (2, 3);



--------------
This E-Mail was brought to you by github_commit_mail.py (Source: https://github.com/geany/infrastructure).


More information about the Commits mailing list