Copy values to avoid strict aliasing warning

To make this code more resilient to future changes, we'll
explicitly translate the libgit2 structure to the libxdiff
structure.
This commit is contained in:
Russell Belfer 2012-03-05 09:14:56 -08:00
parent 2de60205df
commit 28b486b2e2

View File

@ -308,6 +308,7 @@ int git_diff_foreach(
git_vector_foreach(&diff->deltas, info.index, delta) { git_vector_foreach(&diff->deltas, info.index, delta) {
git_blob *old_blob = NULL, *new_blob = NULL; git_blob *old_blob = NULL, *new_blob = NULL;
git_map old_data, new_data; git_map old_data, new_data;
mmfile_t old_xdiff_data, new_xdiff_data;
if (delta->status == GIT_DELTA_UNMODIFIED) if (delta->status == GIT_DELTA_UNMODIFIED)
continue; continue;
@ -409,8 +410,12 @@ int git_diff_foreach(
assert(hunk_cb || line_cb); assert(hunk_cb || line_cb);
info.delta = delta; info.delta = delta;
old_xdiff_data.ptr = old_data.data;
old_xdiff_data.size = old_data.len;
new_xdiff_data.ptr = new_data.data;
new_xdiff_data.size = new_data.len;
xdl_diff((mmfile_t *)&old_data, (mmfile_t *)&new_data, xdl_diff(&old_xdiff_data, &new_xdiff_data,
&xdiff_params, &xdiff_config, &xdiff_callback); &xdiff_params, &xdiff_config, &xdiff_callback);
cleanup: cleanup: