Index: ext/dl/handle.c =================================================================== --- ext/dl/handle.c (revision 22794) +++ ext/dl/handle.c (working copy) @@ -194,8 +194,10 @@ CHECK_DLERROR; if( func ) break; } - xfree(name_n); - if( func ) goto found; + if( func ){ + xfree(name_n); + goto found; + } name_n[len-1] = 'A'; name_n[len++] = '@'; for( i = 0; i < 256; i += 4 ){ @@ -204,6 +206,7 @@ CHECK_DLERROR; if( func ) break; } + xfree(name_n); if( !func ){ rb_raise(rb_eDLError, "unknown symbol \"%s\"", name); }