summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorRussell Belfer <arrbee@arrbee.com>2012-03-05 09:14:56 -0800
committerRussell Belfer <arrbee@arrbee.com>2012-03-05 09:14:56 -0800
commit28b486b2e2376f11cb86f6116763421c2fed7218 (patch)
treecb071e07dd3f861102e783eeecd534b96e836484 /src
parent2de60205dfea2c4a422b2108a5e8605f97c2e895 (diff)
downloadlibgit2-28b486b2e2376f11cb86f6116763421c2fed7218.tar.gz
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.
Diffstat (limited to 'src')
-rw-r--r--src/diff_output.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/diff_output.c b/src/diff_output.c
index aea79ba6c..684de0cc4 100644
--- a/src/diff_output.c
+++ b/src/diff_output.c
@@ -308,6 +308,7 @@ int git_diff_foreach(
git_vector_foreach(&diff->deltas, info.index, delta) {
git_blob *old_blob = NULL, *new_blob = NULL;
git_map old_data, new_data;
+ mmfile_t old_xdiff_data, new_xdiff_data;
if (delta->status == GIT_DELTA_UNMODIFIED)
continue;
@@ -409,8 +410,12 @@ int git_diff_foreach(
assert(hunk_cb || line_cb);
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);
cleanup: