view mercurial/cffi/bdiffbuild.py @ 42092:91cc8dc866ed

remotefilelog: fix crash on `hg addremove` of added-but-deleted file If you `hg add` a file and then delete it from disk, and then run `hg addremove`, the file ends up in the "removed" set that gets passed to the findrenames() override. We then crash because the file is not in the working copy parent. This patch fixes that. Differential Revision: https://phab.mercurial-scm.org/D6194
author Martin von Zweigbergk <martinvonz@google.com>
date Wed, 03 Apr 2019 17:41:58 -0700
parents 0585337ea787
children 2372284d9457
line wrap: on
line source

from __future__ import absolute_import

import cffi
import os

ffi = cffi.FFI()
with open(os.path.join(os.path.join(os.path.dirname(__file__), '..'),
                       'bdiff.c')) as f:
    ffi.set_source("mercurial.cffi._bdiff",
                   f.read(), include_dirs=['mercurial'])
ffi.cdef("""
struct bdiff_line {
    int hash, n, e;
    ssize_t len;
    const char *l;
};

struct bdiff_hunk;
struct bdiff_hunk {
    int a1, a2, b1, b2;
    struct bdiff_hunk *next;
};

int bdiff_splitlines(const char *a, ssize_t len, struct bdiff_line **lr);
int bdiff_diff(struct bdiff_line *a, int an, struct bdiff_line *b, int bn,
    struct bdiff_hunk *base);
void bdiff_freehunks(struct bdiff_hunk *l);
void free(void*);
""")

if __name__ == '__main__':
    ffi.compile()