diff - use new memory alloc macros
This commit is contained in:
21
src/diff.c
21
src/diff.c
@@ -127,7 +127,7 @@ Diff_patch__get__(Diff *self)
|
|||||||
const git_diff_delta* delta;
|
const git_diff_delta* delta;
|
||||||
git_diff_patch* patch;
|
git_diff_patch* patch;
|
||||||
char* str = NULL, *buffer = NULL;
|
char* str = NULL, *buffer = NULL;
|
||||||
int err;
|
int err = 0;
|
||||||
size_t i, len, num, size;
|
size_t i, len, num, size;
|
||||||
PyObject *py_patch;
|
PyObject *py_patch;
|
||||||
|
|
||||||
@@ -135,30 +135,29 @@ Diff_patch__get__(Diff *self)
|
|||||||
for (i = 0; i < num ; ++i) {
|
for (i = 0; i < num ; ++i) {
|
||||||
err = git_diff_get_patch(&patch, &delta, self->diff, i);
|
err = git_diff_get_patch(&patch, &delta, self->diff, i);
|
||||||
|
|
||||||
if (err < 0 || git_diff_patch_to_str(&str, patch) < 0)
|
if (err < 0 || (err = git_diff_patch_to_str(&str, patch)) < 0)
|
||||||
return Error_set(err);
|
goto error;
|
||||||
|
|
||||||
len = strlen(str) + 1;
|
len = strlen(str) + 1;
|
||||||
size = (buffer == NULL) ? len : strlen(buffer) + len;
|
size = (buffer == NULL) ? len : strlen(buffer) + len;
|
||||||
buffer = realloc(buffer, size * sizeof(char));
|
MALLOC(buffer, size, error);
|
||||||
|
|
||||||
if (len == size)
|
if (len == size)
|
||||||
strcpy(buffer, str);
|
strcpy(buffer, str);
|
||||||
else
|
else
|
||||||
strcat(buffer, str);
|
strcat(buffer, str);
|
||||||
|
|
||||||
free(str);
|
FREE(str);
|
||||||
}
|
}
|
||||||
|
|
||||||
py_patch = PyUnicode_FromString(buffer);
|
py_patch = PyUnicode_FromString(buffer);
|
||||||
|
|
||||||
if (buffer != NULL)
|
error:
|
||||||
free(buffer);
|
FREE(str);
|
||||||
|
FREE(buffer);
|
||||||
|
FREE_FUNC(patch, git_diff_patch_free);
|
||||||
|
|
||||||
if (patch != NULL)
|
return (err < 0) ? Error_set(err) : py_patch;
|
||||||
git_diff_patch_free;
|
|
||||||
|
|
||||||
return py_patch;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
|
Reference in New Issue
Block a user