Diff for /embedaddon/php/main/streams/streams.c between versions 1.1.1.2 and 1.1.1.4

version 1.1.1.2, 2012/05/29 12:34:35 version 1.1.1.4, 2013/10/14 08:02:43
Line 2 Line 2
    +----------------------------------------------------------------------+     +----------------------------------------------------------------------+
    | PHP Version 5                                                        |     | PHP Version 5                                                        |
    +----------------------------------------------------------------------+     +----------------------------------------------------------------------+
   | Copyright (c) 1997-2012 The PHP Group                                |   | Copyright (c) 1997-2013 The PHP Group                                |
    +----------------------------------------------------------------------+     +----------------------------------------------------------------------+
    | This source file is subject to version 3.01 of the PHP license,      |     | This source file is subject to version 3.01 of the PHP license,      |
    | that is bundled with this package in the file LICENSE, and is        |     | that is bundled with this package in the file LICENSE, and is        |
Line 1028  PHPAPI char *php_stream_get_record(php_stream *stream, Line 1028  PHPAPI char *php_stream_get_record(php_stream *stream,
         char    *ret_buf,                               /* returned buffer */          char    *ret_buf,                               /* returned buffer */
                         *found_delim = NULL;                          *found_delim = NULL;
         size_t  buffered_len,          size_t  buffered_len,
                        tent_ret_len;                   /* tentative returned length*/                        tent_ret_len;                   /* tentative returned length */
        int             has_delim        = delim_len > 0 && delim[0] != '\0';        int             has_delim        = delim_len > 0;
   
         if (maxlen == 0) {          if (maxlen == 0) {
                 return NULL;                  return NULL;
Line 1060  PHPAPI char *php_stream_get_record(php_stream *stream, Line 1060  PHPAPI char *php_stream_get_record(php_stream *stream,
                 if (has_delim) {                  if (has_delim) {
                         /* search for delimiter, but skip buffered_len (the number of bytes                          /* search for delimiter, but skip buffered_len (the number of bytes
                          * buffered before this loop iteration), as they have already been                           * buffered before this loop iteration), as they have already been
                         * searched for the delimiter */                         * searched for the delimiter.
                          * The left part of the delimiter may still remain in the buffer,
                          * so subtract up to <delim_len - 1> from buffered_len, which is
                          * the ammount of data we skip on this search  as an optimization
                          */
                         found_delim = _php_stream_search_delim(                          found_delim = _php_stream_search_delim(
                                stream, maxlen, buffered_len, delim, delim_len TSRMLS_CC);                                stream, maxlen,
                                 buffered_len >= (delim_len - 1)
                                                 ? buffered_len - (delim_len - 1)
                                                 : 0,
                                 delim, delim_len TSRMLS_CC);
                         if (found_delim) {                          if (found_delim) {
                                 break;                                  break;
                         }                          }
Line 1437  PHPAPI size_t _php_stream_copy_to_mem(php_stream *src, Line 1445  PHPAPI size_t _php_stream_copy_to_mem(php_stream *src,
                         len += ret;                          len += ret;
                         ptr += ret;                          ptr += ret;
                 }                  }
                *ptr = '\0';                if (len) {
                         *ptr = '\0';
                 } else {
                         pefree(*buf, persistent);
                         *buf = NULL;
                 }
                 return len;                  return len;
         }          }
   
Line 1481  PHPAPI int _php_stream_copy_to_stream_ex(php_stream *s Line 1494  PHPAPI int _php_stream_copy_to_stream_ex(php_stream *s
         char buf[CHUNK_SIZE];          char buf[CHUNK_SIZE];
         size_t readchunk;          size_t readchunk;
         size_t haveread = 0;          size_t haveread = 0;
        size_t didread;        size_t didread, didwrite, towrite;
         size_t dummy;          size_t dummy;
         php_stream_statbuf ssbuf;          php_stream_statbuf ssbuf;
   
Line 1516  PHPAPI int _php_stream_copy_to_stream_ex(php_stream *s Line 1529  PHPAPI int _php_stream_copy_to_stream_ex(php_stream *s
                 p = php_stream_mmap_range(src, php_stream_tell(src), maxlen, PHP_STREAM_MAP_MODE_SHARED_READONLY, &mapped);                  p = php_stream_mmap_range(src, php_stream_tell(src), maxlen, PHP_STREAM_MAP_MODE_SHARED_READONLY, &mapped);
   
                 if (p) {                  if (p) {
                        mapped = php_stream_write(dest, p, mapped);                        didwrite = php_stream_write(dest, p, mapped);
   
                         php_stream_mmap_unmap_ex(src, mapped);                          php_stream_mmap_unmap_ex(src, mapped);
   
                        *len = mapped;                        *len = didwrite;
   
                        /* we've got at least 1 byte to read.                        /* we've got at least 1 byte to read
                         * less than 1 is an error */                         * less than 1 is an error
                         * AND read bytes match written */
                        if (mapped > 0) {                        if (mapped > 0 && mapped == didwrite) {
                                 return SUCCESS;                                  return SUCCESS;
                         }                          }
                         return FAILURE;                          return FAILURE;
Line 1543  PHPAPI int _php_stream_copy_to_stream_ex(php_stream *s Line 1556  PHPAPI int _php_stream_copy_to_stream_ex(php_stream *s
   
                 if (didread) {                  if (didread) {
                         /* extra paranoid */                          /* extra paranoid */
                         size_t didwrite, towrite;  
                         char *writeptr;                          char *writeptr;
   
                         towrite = didread;                          towrite = didread;
Line 2327  PHPAPI int _php_stream_scandir(char *dirname, char **n Line 2339  PHPAPI int _php_stream_scandir(char *dirname, char **n
         php_stream *stream;          php_stream *stream;
         php_stream_dirent sdp;          php_stream_dirent sdp;
         char **vector = NULL;          char **vector = NULL;
        int vector_size = 0;        unsigned int vector_size = 0;
        int nfiles = 0;        unsigned int nfiles = 0;
   
         if (!namelist) {          if (!namelist) {
                 return FAILURE;                  return FAILURE;
Line 2344  PHPAPI int _php_stream_scandir(char *dirname, char **n Line 2356  PHPAPI int _php_stream_scandir(char *dirname, char **n
                         if (vector_size == 0) {                          if (vector_size == 0) {
                                 vector_size = 10;                                  vector_size = 10;
                         } else {                          } else {
                                   if(vector_size*2 < vector_size) {
                                           /* overflow */
                                           php_stream_closedir(stream);
                                           efree(vector);
                                           return FAILURE;
                                   }
                                 vector_size *= 2;                                  vector_size *= 2;
                         }                          }
                        vector = (char **) erealloc(vector, vector_size * sizeof(char *));                        vector = (char **) safe_erealloc(vector, vector_size, sizeof(char *), 0);
                 }                  }
   
                 vector[nfiles] = estrdup(sdp.d_name);                  vector[nfiles] = estrdup(sdp.d_name);
   
                 nfiles++;                  nfiles++;
                   if(vector_size < 10 || nfiles == 0) {
                           /* overflow */
                           php_stream_closedir(stream);
                           efree(vector);
                           return FAILURE;
                   }
         }          }
         php_stream_closedir(stream);          php_stream_closedir(stream);
   
         *namelist = vector;          *namelist = vector;
   
        if (compare) {        if (nfiles > 0 && compare) {
                 qsort(*namelist, nfiles, sizeof(char *), (int(*)(const void *, const void *))compare);                  qsort(*namelist, nfiles, sizeof(char *), (int(*)(const void *, const void *))compare);
         }          }
         return nfiles;          return nfiles;

Removed from v.1.1.1.2  
changed lines
  Added in v.1.1.1.4


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>