diff --git a/src/builtin_functions.c b/src/builtin_functions.c index 3bd150cf0f7de2c0979168c0d32f6969b1591424..ab11ff30b98f9e1d166e462a7cf571ccd15b5a1e 100644 --- a/src/builtin_functions.c +++ b/src/builtin_functions.c @@ -3280,30 +3280,31 @@ PMOD_EXPORT void f_crypt(INT32 args) #error No crypt function found and fallback failed. #endif #endif - if (!ret) { - switch(errno) { + if(args < 2) + { + if (!ret) { + switch(errno) { #ifdef ELIBACC - case ELIBACC: - Pike_error("Failed to load a required shared library. " - "Unsupported salt.\n"); - break; + case ELIBACC: + Pike_error("Failed to load a required shared library. " + "Unsupported salt.\n"); + break; #endif - case ENOMEM: - Pike_error("Out of memory.\n"); - break; - case EINVAL: - default: - Pike_error("Unsupported salt (%d).\n", errno); - break; + case ENOMEM: + Pike_error("Out of memory.\n"); + break; + case EINVAL: + default: + Pike_error("Unsupported salt (%d).\n", errno); + break; + } } - } - if(args < 2) - { + pop_n_elems(args); push_text(ret); }else{ int i; - i=!strcmp(ret,saltp); + i = ret && !strcmp(ret,saltp); pop_n_elems(args); push_int(i); }