Minor win32 warning fix.
authorTimothy B. Terriberry <tterribe@xiph.org>
Wed, 2 Aug 2017 21:49:56 +0000 (14:49 -0700)
committerTimothy B. Terriberry <tterribe@xiph.org>
Wed, 2 Aug 2017 23:39:05 +0000 (16:39 -0700)
op_fopen() and op_freopen() declare these arguments as non-NULL,
 so when building with mingw, the compiler reasonably complains
 when we check to see if they're NULL.
We could remove the OP_ARG_NONNULL tags, but the behavior of
 _wopen/_wfreopen appears to be to crash on NULL for either
 parameter.
On Linux, the behavior appears to be to handle a NULL path (fopen
 returns NULL with errno set to EFAULT, and freopen returns the
 passed FILE * with errno set to EFAULT), but crash on a NULL mode.
Keeping the OP_ARG_NONNULL tags promises that passing NULL results
 in undefined behavior, which is at least consistent with the
 behavior being different on different platforms.
It's also consistent with the ABI promises of previous releases,
 which compilers linking against libopusfile might have taken
 advantage of.

src/stream.c

index 0238a6b..6a85197 100644 (file)
@@ -235,8 +235,7 @@ void *op_fopen(OpusFileCallbacks *_cb,const char *_path,const char *_mode){
   fp=fopen(_path,_mode);
 #else
   fp=NULL;
-  if(_path==NULL||_mode==NULL)errno=EINVAL;
-  else{
+  {
     wchar_t *wpath;
     wchar_t *wmode;
     wpath=op_utf8_to_utf16(_path);
@@ -266,8 +265,7 @@ void *op_freopen(OpusFileCallbacks *_cb,const char *_path,const char *_mode,
   fp=freopen(_path,_mode,(FILE *)_stream);
 #else
   fp=NULL;
-  if(_path==NULL||_mode==NULL)errno=EINVAL;
-  else{
+  {
     wchar_t *wpath;
     wchar_t *wmode;
     wpath=op_utf8_to_utf16(_path);