Package: librcc
Version: 0.2.8-2
Severity: important
Tags: patch
User: [email protected]
Usertags: origin-ubuntu ubuntu-patch karmic

src/rccstring.h has this code:

  #ifdef HAVE_STRNLEN
  # ifndef strnlen
  int strnlen(const char *str, size_t size);
  # endif /* !strnlen */

This is pointless and incorrect. configure has already detected that
strnlen is present, so it must be either a function or a macro, and this
declaration is only used if it's a function. In that case, this may fail
if the system header declaration is even slightly different, and if it's
the same, then why redeclare it?

This caused a build failure on Ubuntu. If it doesn't fail to build on
Debian yet, then it's probably only because Ubuntu is using a slightly
newer eglibc, but it would still be worth fixing pre-emptively in
Debian.

  
http://launchpadlibrarian.net/32052981/buildlog_ubuntu-karmic-i386.librcc_0.2.8-2_FAILEDTOBUILD.txt.gz

The following patch fixes this:

  * Don't pointlessly redefine strnlen in rccstring.h; it just causes build
    failures if strnlen isn't a macro.

--- librcc-0.2.8.orig/src/rccstring.h
+++ librcc-0.2.8/src/rccstring.h
@@ -38,11 +38,7 @@
 int rccStringFixID(rcc_string string, rcc_context ctx);
 int rccStringChangeID(rcc_string string, rcc_language_id language_id);
 
-#ifdef HAVE_STRNLEN
-# ifndef strnlen
-int strnlen(const char *str, size_t size);
-# endif /* !strnlen */
-#else
+#ifndef HAVE_STRNLEN
 int rccStrnlen(const char *str, size_t size);
 #endif /* HAVE_STRNLEN */
 int rccIsASCII(const char *str);

Thanks,

-- 
Colin Watson                                       [[email protected]]



-- 
To UNSUBSCRIBE, email to [email protected]
with a subject of "unsubscribe". Trouble? Contact [email protected]

Reply via email to