jcs
/amend
/amendments
/148
committer: Use panic and warn, make diff_line a normal allocation
We were not gaining anything by making it a Handle
jcs made amendment 148 over 2 years ago
--- committer.c Fri Feb 16 14:09:58 2024
+++ committer.c Mon Mar 25 15:53:32 2024
@@ -86,7 +86,7 @@ committer_init(struct browser *browser)
committer->win = NewWindow(0L, &bounds, CtoPstr(title), false,
noGrowDocProc, (WindowPtr)-1L, true, 0);
if (!committer)
- err(1, "Can't create committer window");
+ panic("Can't create committer window");
SetPort(committer->win);
/* log message */
@@ -171,11 +171,8 @@ committer_close(struct focusable *focusable)
committer->browser->committer = NULL;
- if (committer->diff_line != NULL) {
- DisposHandle(committer->diff_line);
- committer->diff_line = NULL;
- }
-
+ if (committer->diff_line != NULL)
+ xfree(&committer->diff_line);
if (committer->diffed_files != NULL)
xfree(&committer->diffed_files);
@@ -465,7 +462,7 @@ committer_generate_diff(struct committer *committer)
file = repo_file_with_id(committer->browser->repo,
selected_files[i]);
if (file == NULL)
- err(1, "Failed to find file in repo with id %d",
+ panic("Failed to find file in repo with id %d",
selected_files[i]);
if (all_files && !repo_file_changed(committer->browser->repo,
@@ -511,7 +508,7 @@ done_diffing:
if (committer->diff_adds == 0 && committer->diff_subs == 0) {
if (!committer->canceled)
- warnx("No changes detected");
+ warn("No changes detected");
browser_close_committer(committer->browser);
}
}
@@ -598,9 +595,8 @@ diff_output(const char *format, ...)
panic("diff_output without committer_diffing");
if (committer_diffing->diff_line == NULL) {
- committer_diffing->diff_line = xNewHandle(DIFF_LINE_SIZE);
+ committer_diffing->diff_line = xmalloc(DIFF_LINE_SIZE);
committer_diffing->diff_line_pos = 0;
- HLock(committer_diffing->diff_line);
}
last_pos = committer_diffing->diff_line_pos;
@@ -610,24 +606,24 @@ diff_output(const char *format, ...)
if (format[0] == '%' && format[1] == 'c' && format[2] == '\0') {
/* avoid having to vsprintf just to append 1 character */
- (*(committer_diffing->diff_line))[last_pos] = va_arg(argptr, int);
+ committer_diffing->diff_line[last_pos] = va_arg(argptr, int);
len = 1;
} else
- len = vsprintf(*(committer_diffing->diff_line) + last_pos, format,
+ len = vsprintf(committer_diffing->diff_line + last_pos, format,
argptr);
va_end(argptr);
committer_diffing->diff_line_pos += len;
if (committer_diffing->diff_line_pos >= DIFF_LINE_SIZE)
- err(1, "diff line overflow!");
+ panic("diff line overflow!");
- if (len == 1 && (*(committer_diffing->diff_line))[last_pos] != '\r')
+ if (len == 1 && committer_diffing->diff_line[last_pos] != '\r')
return 1;
for (i = last_pos; i < committer_diffing->diff_line_pos; i++) {
- if (((char *)*(committer_diffing->diff_line))[i] == '\r') {
- diff_append_line(*(committer_diffing->diff_line) + last_line,
+ if (committer_diffing->diff_line[i] == '\r') {
+ diff_append_line(committer_diffing->diff_line + last_line,
i - last_line + 1, false);
last_line = i + 1;
}
@@ -636,8 +632,8 @@ diff_output(const char *format, ...)
if (last_line == committer_diffing->diff_line_pos) {
committer_diffing->diff_line_pos = 0;
} else if (last_line > 0) {
- memmove(*(committer_diffing->diff_line),
- *(committer_diffing->diff_line) + last_line,
+ memmove(committer_diffing->diff_line,
+ committer_diffing->diff_line + last_line,
committer_diffing->diff_line_pos - last_line);
committer_diffing->diff_line_pos -= last_line;
}
@@ -692,7 +688,7 @@ diff_chunk_write(void)
committer_diffing->diff_te_len +
committer_diffing->diff_chunk_pos);
if (MemError())
- err(1, "Out of memory! Can't expand diff TE by %lu bytes.",
+ panic("Out of memory! Can't expand diff TE by %lu bytes.",
committer_diffing->diff_chunk_pos);
HLock((*(committer_diffing->diff_te))->hText);
memcpy(*(*(committer_diffing->diff_te))->hText +
@@ -718,11 +714,10 @@ diff_finish(void)
if (committer_diffing->diff_line != NULL) {
if (committer_diffing->diff_line_pos)
- diff_append_line(*(committer_diffing->diff_line),
+ diff_append_line(committer_diffing->diff_line,
committer_diffing->diff_line_pos, true);
- DisposHandle(committer_diffing->diff_line);
- committer_diffing->diff_line = NULL;
+ xfree(&committer_diffing->diff_line);
}
if (committer_diffing->diff_chunk != NULL) {
--- committer.h Thu Jan 11 13:11:24 2024
+++ committer.h Thu Mar 21 09:27:25 2024
@@ -46,7 +46,7 @@ struct committer {
short diff_subs;
bool diff_too_big;
#define DIFF_LINE_SIZE 512
- Handle diff_line;
+ char *diff_line;
size_t diff_line_pos;
#define DIFF_CHUNK_SIZE (1024 * 4)
Handle diff_chunk;