Patch 8.0.1620
Problem:    Reading spell file has no good EOF detection.
Solution:   Check for EOF at every character read for a length field.
Files:      src/misc2.c


*** ../vim-8.0.1619/src/misc2.c 2018-03-04 18:07:04.264592373 +0100
--- src/misc2.c 2018-03-20 12:27:42.804521060 +0100
***************
*** 6148,6206 ****
  #if defined(FEAT_SPELL) || defined(FEAT_PERSISTENT_UNDO) || defined(PROTO)
  /*
   * Read 2 bytes from "fd" and turn them into an int, MSB first.
   */
      int
  get2c(FILE *fd)
  {
!     int               n;
  
      n = getc(fd);
!     n = (n << 8) + getc(fd);
!     return n;
  }
  
  /*
   * Read 3 bytes from "fd" and turn them into an int, MSB first.
   */
      int
  get3c(FILE *fd)
  {
!     int               n;
  
      n = getc(fd);
!     n = (n << 8) + getc(fd);
!     n = (n << 8) + getc(fd);
!     return n;
  }
  
  /*
   * Read 4 bytes from "fd" and turn them into an int, MSB first.
   */
      int
  get4c(FILE *fd)
  {
      /* Use unsigned rather than int otherwise result is undefined
       * when left-shift sets the MSB. */
      unsigned  n;
  
!     n = (unsigned)getc(fd);
!     n = (n << 8) + (unsigned)getc(fd);
!     n = (n << 8) + (unsigned)getc(fd);
!     n = (n << 8) + (unsigned)getc(fd);
      return (int)n;
  }
  
  /*
   * Read 8 bytes from "fd" and turn them into a time_T, MSB first.
   */
      time_T
  get8ctime(FILE *fd)
  {
      time_T    n = 0;
      int               i;
  
      for (i = 0; i < 8; ++i)
!       n = (n << 8) + getc(fd);
      return n;
  }
  
--- 6148,6230 ----
  #if defined(FEAT_SPELL) || defined(FEAT_PERSISTENT_UNDO) || defined(PROTO)
  /*
   * Read 2 bytes from "fd" and turn them into an int, MSB first.
+  * Returns -1 when encountering EOF.
   */
      int
  get2c(FILE *fd)
  {
!     int               c, n;
  
      n = getc(fd);
!     if (n == EOF) return -1;
!     c = getc(fd);
!     if (c == EOF) return -1;
!     return (n << 8) + c;
  }
  
  /*
   * Read 3 bytes from "fd" and turn them into an int, MSB first.
+  * Returns -1 when encountering EOF.
   */
      int
  get3c(FILE *fd)
  {
!     int               c, n;
  
      n = getc(fd);
!     if (n == EOF) return -1;
!     c = getc(fd);
!     if (c == EOF) return -1;
!     n = (n << 8) + c;
!     c = getc(fd);
!     if (c == EOF) return -1;
!     return (n << 8) + c;
  }
  
  /*
   * Read 4 bytes from "fd" and turn them into an int, MSB first.
+  * Returns -1 when encountering EOF.
   */
      int
  get4c(FILE *fd)
  {
+     int               c;
      /* Use unsigned rather than int otherwise result is undefined
       * when left-shift sets the MSB. */
      unsigned  n;
  
!     c = getc(fd);
!     if (c == EOF) return -1;
!     n = (unsigned)c;
!     c = getc(fd);
!     if (c == EOF) return -1;
!     n = (n << 8) + (unsigned)c;
!     c = getc(fd);
!     if (c == EOF) return -1;
!     n = (n << 8) + (unsigned)c;
!     c = getc(fd);
!     if (c == EOF) return -1;
!     n = (n << 8) + (unsigned)c;
      return (int)n;
  }
  
  /*
   * Read 8 bytes from "fd" and turn them into a time_T, MSB first.
+  * Returns -1 when encountering EOF.
   */
      time_T
  get8ctime(FILE *fd)
  {
+     int               c;
      time_T    n = 0;
      int               i;
  
      for (i = 0; i < 8; ++i)
!     {
!       c = getc(fd);
!       if (c == EOF) return -1;
!       n = (n << 8) + c;
!     }
      return n;
  }
  
*** ../vim-8.0.1619/src/version.c       2018-03-20 11:41:40.648367028 +0100
--- src/version.c       2018-03-20 12:28:27.896265272 +0100
***************
*** 768,769 ****
--- 768,771 ----
  {   /* Add new patch number below this line */
+ /**/
+     1620,
  /**/

-- 
Due knot trussed yore spell chequer two fined awl miss steaks.

 /// Bram Moolenaar -- b...@moolenaar.net -- http://www.Moolenaar.net   \\\
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\  an exciting new programming language -- http://www.Zimbu.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///

-- 
-- 
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to vim_dev+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Raspunde prin e-mail lui