From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 8824 invoked by alias); 26 Aug 2017 13:28:38 -0000 Mailing-List: contact newlib-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: newlib-owner@sourceware.org Received: (qmail 7494 invoked by uid 89); 26 Aug 2017 13:28:37 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-26.7 required=5.0 tests=BAYES_00,FREEMAIL_ENVFROM_END_DIGIT,FREEMAIL_FROM,GIT_PATCH_0,GIT_PATCH_1,GIT_PATCH_2,GIT_PATCH_3,RCVD_IN_DNSWL_NONE,RP_MATCHES_RCVD,SPF_HELO_PASS,SPF_PASS autolearn=ham version=3.3.2 spammy=H*F:D*qq.com, H*Ad:D*qq.com X-HELO: smtpbgau1.qq.com Received: from smtpbgau1.qq.com (HELO smtpbgau1.qq.com) (54.206.16.166) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Sat, 26 Aug 2017 13:28:33 +0000 X-QQ-mid: esmtp11t1503754107tsuudmekv Received: from localhost.localdomain (unknown [114.212.116.37]) by esmtp4.qq.com (ESMTP) with id ; Sat, 26 Aug 2017 21:28:12 +0800 (CST) X-QQ-SSF: A1000000000000302H101F00000000W X-QQ-FEAT: 0YGU8PmKZ8ZMz+Vpefe7qIGZ+y8kSORD65HkMNt3sOx6bIIcehTNXnHSZHioA XcJkNkfaaNnyplaj8snyradRnWo5xk8p47koE+yPJCZGYV+WC/8xc0hKjateRT+6KnfADsn KT97/Is/fbFXUsBv2VPw3lXIxqTZaZL5Zk5wFiTvfVJ/fYShc/QcvhuWuVEuJMPYIRCDimC a8+17Mu14PjizyzgH7JcTsxkWOGV8YQYDan2bjK1TIkIUpZiIRESp6sbHU5FA8lr+0II5xT Vu9IpIVSwqDTtO X-QQ-GoodBg: 0 From: Sichen Zhao <1473996754@qq.com> To: newlib@sourceware.org Cc: gedare@rtems.org, joel@rtems.org, christian.mauderer@embedded-brains.de, sebastian.huber@embedded-brains.de, Sichen Zhao <1473996754@qq.com> Subject: [PATCH] Modify strnstr.c. Date: Mon, 28 Aug 2017 08:38:00 -0000 Message-Id: <1503754090-28619-1-git-send-email-1473996754@qq.com> X-QQ-SENDSIZE: 520 Feedback-ID: esmtp:qq.com:bgforeign:bgforeign1 X-QQ-Bgrelay: 1 X-IsSubscribed: yes X-SW-Source: 2017/txt/msg00895.txt.bz2 --- newlib/libc/string/strnstr.c | 24 ++++++++---------------- 1 file changed, 8 insertions(+), 16 deletions(-) diff --git a/newlib/libc/string/strnstr.c b/newlib/libc/string/strnstr.c index da5e5bd..7c87bbd 100644 --- a/newlib/libc/string/strnstr.c +++ b/newlib/libc/string/strnstr.c @@ -44,22 +44,14 @@ __FBSDID("$FreeBSD: head/lib/libc/string/strnstr.c 251069 2013-05-28 20:57:40Z e * first slen characters of s. */ char * -strnstr(const char *s, const char *find, size_t slen) +strnstr(const char *haystack, const char *needle, size_t haystack_len) { - char c, sc; - size_t len; + size_t needle_len = strnlen(needle, haystack_len); - if ((c = *find++) != '\0') { - len = strlen(find); - do { - do { - if (slen-- < 1 || (sc = *s++) == '\0') - return (NULL); - } while (sc != c); - if (len > slen) - return (NULL); - } while (strncmp(s, find, len) != 0); - s--; - } - return ((char *)s); + if (needle_len < haystack_len || !needle[needle_len]) { + char *x = memmem(haystack, haystack_len, needle, needle_len); + if (x && !memchr(haystack, 0, x - haystack)) + return x; + } + return NULL; } -- 2.7.4