Module Name: src Committed By: rillig Date: Fri Jul 31 14:07:21 UTC 2020
Modified Files: src/usr.bin/make: var.c Log Message: make(1): omit unnecessary memory writes in :tu and :tl modifiers To generate a diff of this commit: cvs rdiff -u -r1.363 -r1.364 src/usr.bin/make/var.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/usr.bin/make/var.c diff -u src/usr.bin/make/var.c:1.363 src/usr.bin/make/var.c:1.364 --- src/usr.bin/make/var.c:1.363 Fri Jul 31 13:56:19 2020 +++ src/usr.bin/make/var.c Fri Jul 31 14:07:21 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: var.c,v 1.363 2020/07/31 13:56:19 rillig Exp $ */ +/* $NetBSD: var.c,v 1.364 2020/07/31 14:07:21 rillig Exp $ */ /* * Copyright (c) 1988, 1989, 1990, 1993 @@ -69,14 +69,14 @@ */ #ifndef MAKE_NATIVE -static char rcsid[] = "$NetBSD: var.c,v 1.363 2020/07/31 13:56:19 rillig Exp $"; +static char rcsid[] = "$NetBSD: var.c,v 1.364 2020/07/31 14:07:21 rillig Exp $"; #else #include <sys/cdefs.h> #ifndef lint #if 0 static char sccsid[] = "@(#)var.c 8.3 (Berkeley) 3/19/94"; #else -__RCSID("$NetBSD: var.c,v 1.363 2020/07/31 13:56:19 rillig Exp $"); +__RCSID("$NetBSD: var.c,v 1.364 2020/07/31 14:07:21 rillig Exp $"); #endif #endif /* not lint */ #endif @@ -2603,14 +2603,18 @@ ApplyModifier_To(const char *mod, ApplyM ModifyWord_Realpath, NULL); st->next = mod + 2; } else if (mod[1] == 'u') { - char *dp = bmake_strdup(st->val); - for (st->newVal = dp; *dp; dp++) - *dp = toupper((unsigned char)*dp); + size_t len = strlen(st->val); + st->newVal = bmake_malloc(len + 1); + size_t i; + for (i = 0; i < len + 1; i++) + st->newVal[i] = toupper((unsigned char)st->val[i]); st->next = mod + 2; } else if (mod[1] == 'l') { - char *dp = bmake_strdup(st->val); - for (st->newVal = dp; *dp; dp++) - *dp = tolower((unsigned char)*dp); + size_t len = strlen(st->val); + st->newVal = bmake_malloc(len + 1); + size_t i; + for (i = 0; i < len + 1; i++) + st->newVal[i] = tolower((unsigned char)st->val[i]); st->next = mod + 2; } else if (mod[1] == 'W' || mod[1] == 'w') { st->oneBigWord = mod[1] == 'W';