Raymond Toy pushed to branch issue-130-file-author-in-c at cmucl / cmucl
Commits:
-
10874b35
by Raymond Toy at 2022-10-17T11:34:00-07:00
1 changed file:
Changes:
| ... | ... | @@ -730,7 +730,7 @@ os_file_author(const char *path) |
| 730 | 730 | {
|
| 731 | 731 | struct stat sb;
|
| 732 | 732 | char initial[1024];
|
| 733 | - char *buffer, *newbuffer;
|
|
| 733 | + char *buffer, *obuffer;
|
|
| 734 | 734 | size_t size;
|
| 735 | 735 | struct passwd pwd;
|
| 736 | 736 | struct passwd *ppwd;
|
| ... | ... | @@ -742,6 +742,7 @@ os_file_author(const char *path) |
| 742 | 742 | |
| 743 | 743 | result = NULL;
|
| 744 | 744 | buffer = initial;
|
| 745 | + obuffer = NULL;
|
|
| 745 | 746 | size = sizeof(initial) / sizeof(initial[0]);
|
| 746 | 747 | |
| 747 | 748 | /*
|
| ... | ... | @@ -757,11 +758,10 @@ os_file_author(const char *path) |
| 757 | 758 | case ERANGE:
|
| 758 | 759 | /* Buffer is too small, double its size and try again */
|
| 759 | 760 | size *= 2;
|
| 760 | - if ((newbuffer = realloc((buffer == initial) ? NULL : buffer,
|
|
| 761 | - size)) == NULL) {
|
|
| 761 | + obuffer = (buffer == initial) ? NULL : buffer;
|
|
| 762 | + if ((buffer = realloc(obuffer, size)) == NULL) {
|
|
| 762 | 763 | goto exit;
|
| 763 | 764 | }
|
| 764 | - buffer = newbuffer;
|
|
| 765 | 765 | continue;
|
| 766 | 766 | default:
|
| 767 | 767 | /* All other errors */
|
| ... | ... | @@ -769,9 +769,7 @@ os_file_author(const char *path) |
| 769 | 769 | }
|
| 770 | 770 | }
|
| 771 | 771 | exit:
|
| 772 | - if (buffer != initial) {
|
|
| 773 | - free(buffer);
|
|
| 774 | - }
|
|
| 772 | + free(obuffer);
|
|
| 775 | 773 |
|
| 776 | 774 | return result;
|
| 777 | 775 | } |