• Nick Mathewson's avatar
    Don't redefine str(n)casecmp on windows unless they're missing · c8ccd028
    Nick Mathewson authored
    When we do redefine them, use inline functions instead of #define.
    This fixes a latent code problem in our redefinition of these
    functions, which was exposed by our refactoring: Previously, we
    would #define strcasecmp after string.h was included, so nothing bad
    would happen.  But when we refactored, we would sometimes #define it
    first, which was a problem on mingw, whose headers contain
    inline int strcasecmp (const char *a, const char *b)
       { return _stricmp(a,b); }
    Our define turned this into:
      inline int _stricmp(const char *a, const char *b)
        { return _stricmp(a,b); }
    And GCC would correctly infer that this function would loop forever,
    rather than actually comparing anything.  This caused bug 26594.
    Fixes bug 26594; bug not in any released version of Tor.