]> granicus.if.org Git - php/commitdiff
fix fwrite() and fgets() in unicode mode
authorAntony Dovgal <tony2001@php.net>
Wed, 5 Oct 2005 21:46:28 +0000 (21:46 +0000)
committerAntony Dovgal <tony2001@php.net>
Wed, 5 Oct 2005 21:46:28 +0000 (21:46 +0000)
main/streams/streams.c

index 0385d590d4f5697017eb8499de15ce567f698b6c..f00f9627f52a0ae5b8f90220349b9b29ae4d2bfb 100755 (executable)
@@ -1258,7 +1258,7 @@ PHPAPI UChar *_php_stream_u_get_line(php_stream *stream, UChar *buf, int32_t *pm
                                count_bytes <<= 1; /* translate U16 to bytes */
                        }
 
-                       memcpy(buf + num_bytes, s, count_bytes);
+                       memcpy(buf + (num_bytes >> 1), s, count_bytes);
                        num_bytes += count_bytes;
                        num_chars += count_chars;
                        stream->readbuf_ofs += count_bytes >> 1;
@@ -1577,23 +1577,23 @@ PHPAPI size_t _php_stream_write(php_stream *stream, const char *buf, size_t coun
 
 PHPAPI size_t _php_stream_u_write(php_stream *stream, const UChar *buf, int32_t count TSRMLS_DC)
 {
+       int32_t ret;
+       
        if (buf == NULL || count == 0 || stream->ops->write == NULL) {
                return 0;
        }
 
        if (stream->writefilters.head) {
-               return _php_stream_write_filtered(stream, (const char*)buf, count, PSFS_FLAG_NORMAL, 1 TSRMLS_CC);
+               ret = _php_stream_write_filtered(stream, (const char*)buf, count, PSFS_FLAG_NORMAL, 1 TSRMLS_CC);
        } else {
-               int32_t ret;
-
                ret = _php_stream_write_buffer(stream, (const char*)buf, UBYTES(count) TSRMLS_CC);
+       }
 
-               /* Return data points, not bytes */
-               if (ret > 0) {
-                       ret >>= 1;
-               }
-               return ret;
+       /* Return data points, not bytes */
+       if (ret > 0) {
+               ret >>= 1;
        }
+       return ret;
 }
 
 PHPAPI size_t _php_stream_printf(php_stream *stream TSRMLS_DC, const char *fmt, ...)