@@ -77,6 +77,10 @@ void *xrealloc();
7777# include <unistd.h>
7878#endif
7979
80+ #ifndef UNREACHABLE_RETURN
81+ # define UNREACHABLE_RETURN (x ) return (x)
82+ #endif
83+
8084#ifndef dln_loaderror
8185static void
8286dln_loaderror (const char * format , ...)
@@ -348,6 +352,7 @@ dln_open(const char *file)
348352 void * handle ;
349353
350354#if defined(_WIN32 )
355+ # define DLN_DEFINED
351356 char message [1024 ];
352357
353358 /* Convert the file path to wide char */
@@ -374,6 +379,7 @@ dln_open(const char *file)
374379# endif
375380
376381#elif defined(USE_DLN_DLOPEN )
382+ # define DLN_DEFINED
377383
378384# ifndef RTLD_LAZY
379385# define RTLD_LAZY 1
@@ -505,7 +511,7 @@ abi_check_enabled_p(void)
505511static void *
506512dln_load_and_init (const char * file , const char * init_fct_name )
507513{
508- #if defined(_WIN32 ) || defined( USE_DLN_DLOPEN )
514+ #if defined(DLN_DEFINED )
509515 void * handle = dln_open (file );
510516
511517#ifdef RUBY_DLN_CHECK_ABI
@@ -523,6 +529,7 @@ dln_load_and_init(const char *file, const char *init_fct_name)
523529 return handle ;
524530
525531#elif defined(_AIX )
532+ # define DLN_DEFINED
526533 {
527534 void (* init_fct )(void );
528535
@@ -539,33 +546,25 @@ dln_load_and_init(const char *file, const char *init_fct_name)
539546 }
540547#else
541548 dln_notimplement ();
549+ UNREACHABLE_RETURN (0 );
542550#endif
543-
544- return 0 ; /* dummy return */
545551}
546552
547553void *
548554dln_load (const char * file )
549555{
550- #if defined(_WIN32 ) || defined(USE_DLN_DLOPEN )
551- char * init_fct_name ;
552- init_funcname (& init_fct_name , file );
553- return dln_load_and_init (file , init_fct_name );
554- #else
555- dln_notimplement ();
556- return 0 ;
557- #endif
556+ return dln_load_feature (file , file );
558557}
559558
560559void *
561560dln_load_feature (const char * file , const char * fname )
562561{
563- #if defined(_WIN32 ) || defined( USE_DLN_DLOPEN )
562+ #if defined(DLN_DEFINED )
564563 char * init_fct_name ;
565564 init_funcname (& init_fct_name , fname );
566565 return dln_load_and_init (file , init_fct_name );
567566#else
568567 dln_notimplement ();
569- return 0 ;
568+ UNREACHABLE_RETURN ( 0 ) ;
570569#endif
571570}
0 commit comments