[ 
https://issues.apache.org/jira/browse/HDFS-7817?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14334290#comment-14334290
 ] 

Colin Patrick McCabe commented on HDFS-7817:
--------------------------------------------

{{hadoop-common-project/hadoop-common/src/main/native/src/exception.c}} has 
this:

{code}
const char* terror(int errnum)
{
#if defined(__sun)
// MT-Safe under Solaris which doesn't support sys_errlist/sys_nerr
  return strerror(errnum);
#else
  if ((errnum < 0) || (errnum >= sys_nerr)) {
    return "unknown error.";
  }
  return sys_errlist[errnum];
#endif
}
{code}

We could do something more clever with detecting POSIX {{strerror_r}}, but it's 
kind of a pain and {{sys_errlist}} seems to work well.

> libhdfs3: fix strerror_r detection
> ----------------------------------
>
>                 Key: HDFS-7817
>                 URL: https://issues.apache.org/jira/browse/HDFS-7817
>             Project: Hadoop HDFS
>          Issue Type: Sub-task
>          Components: hdfs-client
>            Reporter: Colin Patrick McCabe
>
> The signature of strerror_r is not quite detected correctly in libhdfs3.  The 
> code assumes that {{int foo = strerror_r}} will fail to compile with the GNU 
> type signature, but this is not the case (C\+\+ will coerce the char* to an 
> int in this case).  Instead, we should do what the libhdfs {{terror}} 
> (threaded error) function does here.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to