X-Git-Url: http://git.tuebingen.mpg.de/?a=blobdiff_plain;f=error.h;h=f2c6e15e41e7a77fd5b30312e5ae7118d0f2f0b6;hb=5364bf49a734ba76400d3eb31f42f6a861e64bef;hp=fe44ff5c50487744881ea1d21d1007528a2ecd70;hpb=42f73552054f4b013b5ba09da5400827f9c624f3;p=paraslash.git diff --git a/error.h b/error.h index fe44ff5c..f2c6e15e 100644 --- a/error.h +++ b/error.h @@ -303,18 +303,20 @@ static const char *weak_lls_strerror(int) __attribute__ ((weakref("lls_strerror" */ _static_inline_ const char *para_strerror(int num) { + unsigned idx = num & ~((1U << OSL_ERROR_BIT) | (1U << LLS_ERROR_BIT) + | (1U << SYSTEM_ERROR_BIT)); assert(num > 0); if (IS_OSL_ERROR(num)) { assert(weak_osl_strerror); - return weak_osl_strerror(num & ~(1U << OSL_ERROR_BIT)); + return weak_osl_strerror(idx); } if (IS_LLS_ERROR(num)) { assert(weak_lls_strerror); - return weak_lls_strerror(num & ~(1U << LLS_ERROR_BIT)); + return weak_lls_strerror(idx); } if (IS_SYSTEM_ERROR(num)) - return strerror(num & ~(1U << SYSTEM_ERROR_BIT)); - return para_errlist[num]; + return strerror(idx); + return para_errlist[idx]; } /**