summaryrefslogtreecommitdiff
path: root/clients/zwrite
diff options
context:
space:
mode:
authorGravatar John Kohl <jtkohl@mit.edu>1988-06-27 07:26:41 +0000
committerGravatar John Kohl <jtkohl@mit.edu>1988-06-27 07:26:41 +0000
commita2a9df6d11a2f5ac8520ab6f2d8a963c99e6e782 (patch)
treea64e933998c5093c04c9328925a3a67d29ae0120 /clients/zwrite
parentc6af263292660104d13e65fc0c13ff335992b3e4 (diff)
fix up some brain-dead malloc strategies.
Diffstat (limited to 'clients/zwrite')
-rw-r--r--clients/zwrite/zwrite.c18
1 files changed, 9 insertions, 9 deletions
diff --git a/clients/zwrite/zwrite.c b/clients/zwrite/zwrite.c
index 40deb83..0f4abf5 100644
--- a/clients/zwrite/zwrite.c
+++ b/clients/zwrite/zwrite.c
@@ -159,14 +159,15 @@ main(argc, argv)
}
if (msgarg) {
+ int size = msgsize;
+ for (arg=msgarg;arg<argc;arg++)
+ size += (strlen(argv[arg]) + 1);
+ size++; /* for the newline */
+ if (message)
+ message = realloc(message, (unsigned) size);
+ else
+ message = malloc((unsigned) size);
for (arg=msgarg;arg<argc;arg++) {
- if (message)
- message = realloc(message,
- (unsigned) (msgsize+strlen(argv[arg])+
- (arg == argc-1)?2:1));
- else
- message = malloc((unsigned)(strlen(argv[arg])+
- ((arg == argc-1)?2:1)));
(void) strcpy(message+msgsize, argv[arg]);
msgsize += strlen(argv[arg]);
if (arg != argc-1) {
@@ -177,8 +178,7 @@ main(argc, argv)
message[msgsize] = '\n';
message[msgsize+1] = '\0';
msgsize += 2;
- }
- else {
+ } else {
if (isatty(0)) {
for (;;) {
if (!fgets(bfr, sizeof bfr, stdin))