From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-qt1-x835.google.com (mail-qt1-x835.google.com [IPv6:2607:f8b0:4864:20::835]) by sourceware.org (Postfix) with ESMTPS id 5512938930DA for ; Sat, 2 May 2020 00:06:38 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 5512938930DA Received: by mail-qt1-x835.google.com with SMTP id w29so9313955qtv.3 for ; Fri, 01 May 2020 17:06:38 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=FaqL4rIEmE3+7biGbtn9L2BiTilOnA9uJQLAmNQtb4Y=; b=hYKkT0qz66VmhmVhlFhT+0Pzb8clPPQnTSxUj5CDIIF7KDUQqPKGcB4p7eP5fEd8dK kmBaGIDEOvRhEs6zdgGzVVtraU1+2EcUuCuCCjrUBgG18fhEWJtK7cCtDVVomTgn1bp0 6lif48OetwNv4bYiHvbFd/wMe2Cw8aZGLR7AHmpTEYuutoxtSf73LHbx55/roFbtZcMn C6I27fHP98tVjEZzbGxXxE2hkljoL03X9U9fXDjCtIBEgDPR0HK1L3QTbnzeXmxJBJ2x MNcEKC4x7O6n3gBRA7vTAL1ExptIMK0CHgdBJ4q5SqYxxBTuPGqt5iO70AAvLECl/8kp 1nDQ== X-Gm-Message-State: AGi0PuaefkrlG7HG4uyOGCb6BhPGucbb0I7m15MEDLhY4yBG6YSx4J+4 knPH3ifk4eYEfkOGMqWM2QeqOv5A3Hm01+BUUHLXOgAF1+8= X-Google-Smtp-Source: APiQypKQRrc7b4lrQaffOpR8n2Y2FyuG038IecSkw8uFlj0LYlrqu7ZpgHsh6jDassL1609Uuq2Ltm9bjw0TU+VzzAo= X-Received: by 2002:ac8:164e:: with SMTP id x14mr6488161qtk.196.1588377997628; Fri, 01 May 2020 17:06:37 -0700 (PDT) MIME-Version: 1.0 From: Seija Kijin Date: Fri, 1 May 2020 20:06:26 -0400 Message-ID: Subject: [PATCH] libiberty: Make strstr.c in libiberty ANSI compliant To: gcc-patches@gcc.gnu.org X-Spam-Status: No, score=-11.2 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_ENVFROM_END_DIGIT, FREEMAIL_FROM, GIT_PATCH_2, GIT_PATCH_3, HTML_MESSAGE, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org Content-Type: text/plain; charset="UTF-8" X-Content-Filtered-By: Mailman/MimeDel 2.1.29 X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 02 May 2020 00:06:39 -0000 The original code in libiberty says "FIXME" and then says it has not been validated to be ANSI compliant. However, this patch changes the function to match implementations that ARE compliant, and such code is in the public domain. I ran the test results, and there are no test failures. --- strstr.c 2020-03-12 07:07:24.000000000 -0400 +++ strstr_fixed.c 2020-05-01 19:53:13.904340902 -0400 @@ -16,26 +16,20 @@ */ - -/* FIXME: The above description is ANSI compiliant. This routine has not - been validated to comply with it. -fnf */ - #include -extern char *strchr (const char *, int); -extern int strncmp (const void *, const void *, size_t); +extern int memcmp (const void *, const void *, size_t); extern size_t strlen (const char *); char * strstr (const char *s1, const char *s2) { - const char *p = s1; const size_t len = strlen (s2); - - for (; (p = strchr (p, *s2)) != 0; p++) - { - if (strncmp (p, s2, len) == 0) - return (char *)p; - } + while (*s1) + { + if (!memcmp (s1, s2, len)) + return (char *)s1; + ++s1; + } return (0); }