]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
Update.
authorUlrich Drepper <drepper@redhat.com>
Sun, 28 May 2000 18:32:20 +0000 (18:32 +0000)
committerUlrich Drepper <drepper@redhat.com>
Sun, 28 May 2000 18:32:20 +0000 (18:32 +0000)
2000-05-21  Jakub Jelinek  <jakub@redhat.com>

* libio/libioP.h (_IO_CHECK_WIDE): Define.
* libio/iosetbuffer.c (_IO_setbuffer): Use it.
Call _IO_WSETBUF even for _mode 1.
* libio/iosetvbuf.c (_IO_setvbuf): Likewise.
* libio/fileops.c (_IO_new_file_fopen): Return NULL if
_IO_CHECK_WIDE fails.

ChangeLog
libio/bits/stdio.h
libio/fileops.c
libio/iosetbuffer.c
libio/iosetvbuf.c
libio/libioP.h

index 3ed8ffa010f0f68d53565131d577e09b61cb9132..2885dd71e41a11b946dd985f797c3b02a30c9b72 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+2000-05-21  Jakub Jelinek  <jakub@redhat.com>
+
+       * libio/libioP.h (_IO_CHECK_WIDE): Define.
+       * libio/iosetbuffer.c (_IO_setbuffer): Use it.
+       Call _IO_WSETBUF even for _mode 1.
+       * libio/iosetvbuf.c (_IO_setvbuf): Likewise.
+       * libio/fileops.c (_IO_new_file_fopen): Return NULL if
+       _IO_CHECK_WIDE fails.
+
 2000-05-28  Ulrich Drepper  <drepper@redhat.com>
 
        * po/da.po: New file.
index d698132558c1ea7a1efdb19bd322d5c9016215c9..2522a3846eb3dbdd6c0a241609c17935f217deb1 100644 (file)
@@ -1,5 +1,5 @@
 /* Optimizing macros and inline functions for stdio functions.
-   Copyright (C) 198 Free Software Foundation, Inc.
+   Copyright (C) 1998, 2000 Free Software Foundation, Inc.
 
    The GNU C Library is free software; you can redistribute it and/or
    modify it under the terms of the GNU Library General Public License as
index c5aea3a60ea6993e372da830b9716c130afde11d..cd57370d980a6e4dece679a93d1c98cdc2629b20 100644 (file)
@@ -278,9 +278,9 @@ _IO_new_file_fopen (fp, filename, mode, is32not64)
       /* Yep.  Load the appropriate conversions and set the orientation
         to wide.  */
        struct gconv_fcts fcts;
-       struct _IO_codecvt *cc = &fp->_wide_data->_codecvt;
+       struct _IO_codecvt *cc;
 
-       if (__wcsmbs_named_conv (&fcts, cs + 5) != 0)
+       if (! _IO_CHECK_WIDE (fp) || __wcsmbs_named_conv (&fcts, cs + 5) != 0)
          {
            /* Something went wrong, we cannot load the conversion modules.
               This means we cannot proceed since the user explicitly asked
@@ -289,6 +289,8 @@ _IO_new_file_fopen (fp, filename, mode, is32not64)
            return NULL;
          }
 
+       cc = &fp->_wide_data->_codecvt;
+
        /* The functions are always the same.  */
        *cc = __libio_codecvt;
 
index 852a2dd36cb87b72917e3e950b213a02e9e151fd..99738a7fafa91467d0d91bb7a07527ed8defedb7 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 1993, 95, 96, 97, 98, 99 Free Software Foundation, Inc.
+/* Copyright (C) 1993, 95, 96, 97, 98, 99, 2000 Free Software Foundation, Inc.
    This file is part of the GNU IO Library.
 
    This library is free software; you can redistribute it and/or
@@ -32,13 +32,13 @@ _IO_setbuffer (fp, buf, size)
      _IO_size_t size;
 {
   CHECK_FILE (fp, );
-  _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, fp);
+  _IO_cleanup_region_start ((void (*) (void *)) _IO_funlockfile, fp);
   _IO_flockfile (fp);
   fp->_flags &= ~_IO_LINE_BUF;
   if (!buf)
     size = 0;
   (void) _IO_SETBUF (fp, buf, size);
-  if (fp->_vtable_offset == 0 && fp->_mode == 0)
+  if (fp->_vtable_offset == 0 && fp->_mode == 0 && _IO_CHECK_WIDE (fp))
     /* We also have to set the buffer using the wide char function.  */
     (void) _IO_WSETBUF (fp, buf, size);
   _IO_funlockfile (fp);
index a0287a3ee5986b32beb90485c983d4b514f9f200..673677191acec4f194b687808feea7e597dcea10 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 1993, 1996, 1997, 1998, 1999 Free Software Foundation, Inc.
+/* Copyright (C) 1993, 96, 97, 98, 99, 2000 Free Software Foundation, Inc.
    This file is part of the GNU IO Library.
 
    This library is free software; you can redistribute it and/or
@@ -38,7 +38,7 @@ _IO_setvbuf (fp, buf, mode, size)
 {
   int result;
   CHECK_FILE (fp, EOF);
-  _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, fp);
+  _IO_cleanup_region_start ((void (*) (void *)) _IO_funlockfile, fp);
   _IO_flockfile (fp);
   switch (mode)
     {
@@ -90,7 +90,8 @@ _IO_setvbuf (fp, buf, mode, size)
       goto unlock_return;
     }
   result = _IO_SETBUF (fp, buf, size) == NULL ? EOF : 0;
-  if (result == 0 && fp->_vtable_offset == 0 && fp->_mode == 0)
+  if (result == 0 && fp->_vtable_offset == 0 && fp->_mode == 0
+      && _IO_CHECK_WIDE (fp))
     /* We also have to set the buffer using the wide char function.  */
     result = _IO_WSETBUF (fp, buf, size) == NULL ? EOF : 0;
 
index d23436ab2699e4fd0487865381261902e87bb336..59d20cd4be9ca8767a3027318bb487ceb9a522ac 100644 (file)
@@ -71,6 +71,8 @@ extern "C" {
 
 #define _IO_JUMPS(THIS) ((struct _IO_FILE_plus *) (THIS))->vtable
 #define _IO_WIDE_JUMPS(THIS) ((struct _IO_FILE *) (THIS))->_wide_data->_wide_vtable
+#define _IO_CHECK_WIDE(THIS) (((struct _IO_FILE *) (THIS))->_wide_data != NULL)
+
 #if _IO_JUMPS_OFFSET
 # define _IO_JUMPS_FUNC(THIS) \
  (*(struct _IO_jump_t **) ((void *) &((struct _IO_FILE_plus *) (THIS))->vtable\