diff --git a/ChangeLog b/ChangeLog index 3fa801b179..06b002cb30 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +Wed Mar 5 11:58:30 2014 Nobuyoshi Nakada + + * ext/openssl/ossl.c (ossl_make_error): check NULL for unknown + error reasons with old OpenSSL, and insert a colon iff formatted + message is not empty. + Wed Mar 5 00:42:00 2014 Kazuki Tsujimoto * ext/pathname/lib/pathname.rb (Pathname#find): add "ignore_error" diff --git a/ext/openssl/ossl.c b/ext/openssl/ossl.c index 614d2fa6f7..7f9105c117 100644 --- a/ext/openssl/ossl.c +++ b/ext/openssl/ossl.c @@ -312,10 +312,11 @@ ossl_make_error(VALUE exc, const char *fmt, va_list args) else msg = ERR_reason_error_string(e); if (NIL_P(str)) { - str = rb_str_new_cstr(msg); + if (msg) str = rb_str_new_cstr(msg); } else { - rb_str_cat2(rb_str_cat2(str, ": "), msg); + if (RSTRING_LEN(str)) rb_str_cat2(str, ": "); + rb_str_cat2(str, msg ? msg : "(null)"); } } if (dOSSL == Qtrue){ /* show all errors on the stack */