posix: glob, glob64 should not be declared __THROW [BZ #27522]

Message ID 87h7lpg3nk.fsf@oldenburg.str.redhat.com
State Committed
Commit 3c667926673bac6017bf78569f582f6baee9948f
Headers
Series posix: glob, glob64 should not be declared __THROW [BZ #27522] |

Commit Message

Florian Weimer March 5, 2021, 12:56 p.m. UTC
  These functions invoke callbacks with GLOB_ALTDIRFUNC, so they
are not leaf functions (as implied by _THROW).  Use __THROWNL
and __REDIRECT_NTHNL to express this.

---
 posix/glob.h | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)
  

Comments

Adhemerval Zanella Netto March 5, 2021, 1:05 p.m. UTC | #1
On 05/03/2021 09:56, Florian Weimer via Libc-alpha wrote:
> These functions invoke callbacks with GLOB_ALTDIRFUNC, so they
> are not leaf functions (as implied by _THROW).  Use __THROWNL
> and __REDIRECT_NTHNL to express this.

LGTM, thanks.

Reviewed-by: Adhemerval Zanella  <adhemerval.zanella@linaro.org>

> 
> ---
>  posix/glob.h | 12 ++++++------
>  1 file changed, 6 insertions(+), 6 deletions(-)
> 
> diff --git a/posix/glob.h b/posix/glob.h
> index 71c6b84a8a..b5686600c7 100644
> --- a/posix/glob.h
> +++ b/posix/glob.h
> @@ -145,15 +145,15 @@ typedef struct
>  #if !defined __USE_FILE_OFFSET64
>  extern int glob (const char *__restrict __pattern, int __flags,
>  		 int (*__errfunc) (const char *, int),
> -		 glob_t *__restrict __pglob) __THROW;
> +		 glob_t *__restrict __pglob) __THROWNL;
>  
>  /* Free storage allocated in PGLOB by a previous `glob' call.  */
>  extern void globfree (glob_t *__pglob) __THROW;
>  #else
> -extern int __REDIRECT_NTH (glob, (const char *__restrict __pattern,
> -				  int __flags,
> -				  int (*__errfunc) (const char *, int),
> -				  glob_t *__restrict __pglob), glob64);
> +extern int __REDIRECT_NTHNL (glob, (const char *__restrict __pattern,
> +				    int __flags,
> +				    int (*__errfunc) (const char *, int),
> +				    glob_t *__restrict __pglob), glob64);
>  
>  extern void __REDIRECT_NTH (globfree, (glob_t *__pglob), globfree64);
>  #endif
> @@ -161,7 +161,7 @@ extern void __REDIRECT_NTH (globfree, (glob_t *__pglob), globfree64);
>  #ifdef __USE_LARGEFILE64
>  extern int glob64 (const char *__restrict __pattern, int __flags,
>  		   int (*__errfunc) (const char *, int),
> -		   glob64_t *__restrict __pglob) __THROW;
> +		   glob64_t *__restrict __pglob) __THROWNL;
>  
>  extern void globfree64 (glob64_t *__pglob) __THROW;
>  #endif
>
  

Patch

diff --git a/posix/glob.h b/posix/glob.h
index 71c6b84a8a..b5686600c7 100644
--- a/posix/glob.h
+++ b/posix/glob.h
@@ -145,15 +145,15 @@  typedef struct
 #if !defined __USE_FILE_OFFSET64
 extern int glob (const char *__restrict __pattern, int __flags,
 		 int (*__errfunc) (const char *, int),
-		 glob_t *__restrict __pglob) __THROW;
+		 glob_t *__restrict __pglob) __THROWNL;
 
 /* Free storage allocated in PGLOB by a previous `glob' call.  */
 extern void globfree (glob_t *__pglob) __THROW;
 #else
-extern int __REDIRECT_NTH (glob, (const char *__restrict __pattern,
-				  int __flags,
-				  int (*__errfunc) (const char *, int),
-				  glob_t *__restrict __pglob), glob64);
+extern int __REDIRECT_NTHNL (glob, (const char *__restrict __pattern,
+				    int __flags,
+				    int (*__errfunc) (const char *, int),
+				    glob_t *__restrict __pglob), glob64);
 
 extern void __REDIRECT_NTH (globfree, (glob_t *__pglob), globfree64);
 #endif
@@ -161,7 +161,7 @@  extern void __REDIRECT_NTH (globfree, (glob_t *__pglob), globfree64);
 #ifdef __USE_LARGEFILE64
 extern int glob64 (const char *__restrict __pattern, int __flags,
 		   int (*__errfunc) (const char *, int),
-		   glob64_t *__restrict __pglob) __THROW;
+		   glob64_t *__restrict __pglob) __THROWNL;
 
 extern void globfree64 (glob64_t *__pglob) __THROW;
 #endif