py3: two more passing tests from the ratchet in buildbot
Differential Revision: https://phab.mercurial-scm.org/D3736
bdiff: document that bdiff_freehunks() accepts NULL
blocks() of cext/bdiff.c may pass NULL on OOM.
hgweb: propagate http headers from ErrorResponse for web interface commands
This makes it possible for e.g. authorization hooks to provide appropriate
headers to make the web browser ask for credentials.
It's done in the same way as the existing code in wireprotoserver.py.
py3: fix map() use in templatekw.showpredecessors()
Now it matters since hybrid.tobool() no longer consumes the generator.
templatefilters: rename commonprefix to commondir
Two reasons:
* It makes it clearer that it's not a generic common string
prefix (e.g. commonprefix(["bar", "baz"]) is not "ba", but "")
* If we ever want a filter for generic common string prefix,
then the name is now available for that.
"commondir" does not describe the prefix-ness, however. I'm happy to
rename it "commondirprefix" or "commonprefixdir" if others prefer.
Differential Revision: https://phab.mercurial-scm.org/D3731
bitmanipulation: fix undefined behavior in bit shift in getbe32
OSS-Fuzz caught this in its ubsan mode[0]. I'm not worried about a
security issue here because in practice this should work out the way
we naively expected, we're just making things explicit to the
compiler with the casts.
0: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=8876
Differential Revision: https://phab.mercurial-scm.org/D3729
lazymanifest: don't crash when out of memory (
issue5916)
self->lines can be NULL if we failed to allocate memory for it.
cext: stop worrying and love the free(NULL)
There is no need to check for a NULL pointer before calling free since
free(NULL) is defined by C standards as a no-op. Lots of software relies on
this behavior so it is completely safe to call even on the most obscure of
systems.