X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=folly%2FDemangle.cpp;h=55a8f79329e16afc0dad02339c7d748ac395c11a;hb=c1d4dcfe934f7c902b7a38a8c9fbd02c9d7b0640;hp=3922f74fcb458cbd83115714e7ea79ae725563f9;hpb=e3225b60a767f9bae67a475997e2b5ac426e29ea;p=folly.git diff --git a/folly/Demangle.cpp b/folly/Demangle.cpp index 3922f74f..55a8f793 100644 --- a/folly/Demangle.cpp +++ b/folly/Demangle.cpp @@ -1,5 +1,5 @@ /* - * Copyright 2014 Facebook, Inc. + * Copyright 2016 Facebook, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -14,12 +14,12 @@ * limitations under the License. */ -#include "folly/Demangle.h" +#include #include #include -#include "folly/Malloc.h" +#include #if FOLLY_HAVE_CPLUS_DEMANGLE_V3_CALLBACK # include @@ -28,7 +28,7 @@ // // TODO(tudorb): Detect this with autoconf for the open-source version. // -// __attribute__((weak)) doesn't work, because cplus_demangle_v3_callback +// __attribute__((__weak__)) doesn't work, because cplus_demangle_v3_callback // is exported by an object file in libiberty.a, and the ELF spec says // "The link editor does not extract archive members to resolve undefined weak // symbols" (but, interestingly enough, will resolve undefined weak symbols @@ -55,21 +55,6 @@ extern "C" int cplus_demangle_v3_callback( #endif -namespace { - -// glibc doesn't have strlcpy -size_t my_strlcpy(char* dest, const char* src, size_t size) { - size_t len = strlen(src); - if (size != 0) { - size_t n = std::min(len, size - 1); // always null terminate! - memcpy(dest, src, n); - dest[n] = '\0'; - } - return len; -} - -} // namespace - namespace folly { #if FOLLY_HAVE_CPLUS_DEMANGLE_V3_CALLBACK @@ -119,7 +104,7 @@ size_t demangle(const char* name, char* out, size_t outSize) { demangleCallback, &dbuf); if (status == 0) { // failed, return original - return my_strlcpy(out, name, outSize); + return folly::strlcpy(out, name, outSize); } if (outSize != 0) { *dbuf.dest = '\0'; @@ -134,9 +119,19 @@ fbstring demangle(const char* name) { } size_t demangle(const char* name, char* out, size_t outSize) { - return my_strlcpy(out, name, outSize); + return folly::strlcpy(out, name, outSize); } #endif +size_t strlcpy(char* dest, const char* const src, size_t size) { + size_t len = strlen(src); + if (size != 0) { + size_t n = std::min(len, size - 1); // always null terminate! + memcpy(dest, src, n); + dest[n] = '\0'; + } + return len; +} + } // folly