diff options
author | John Kohl <jtkohl@mit.edu> | 1988-06-27 07:26:41 +0000 |
---|---|---|
committer | John Kohl <jtkohl@mit.edu> | 1988-06-27 07:26:41 +0000 |
commit | a2a9df6d11a2f5ac8520ab6f2d8a963c99e6e782 (patch) | |
tree | a64e933998c5093c04c9328925a3a67d29ae0120 /clients/zwrite | |
parent | c6af263292660104d13e65fc0c13ff335992b3e4 (diff) |
fix up some brain-dead malloc strategies.
Diffstat (limited to 'clients/zwrite')
-rw-r--r-- | clients/zwrite/zwrite.c | 18 |
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)) |