diff options
author | Philipp Gesang <phg@phi-gamma.net> | 2017-01-29 01:09:08 +0100 |
---|---|---|
committer | Philipp Gesang <phg@phi-gamma.net> | 2017-01-29 01:11:28 +0100 |
commit | d87cbe82a683b13674ad8e943a638d4f0f62cb3b (patch) | |
tree | b43e3fc5912c5844cb177b98b1dd42533ec93d33 | |
parent | be76d78b894022622622050e3cc5fcd882b54acc (diff) | |
download | luaotfload-d87cbe82a683b13674ad8e943a638d4f0f62cb3b.tar.gz |
[letterspace] address node deallocation issues
With 1.0.3 the test pln-letterspace-12-double-ligature-issue-350.tex
causes a crash on account of a double free. Remove the code that calls
nodedirect.free() on the removed nodes until this is better understood.
-rw-r--r-- | src/luaotfload-letterspace.lua | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/src/luaotfload-letterspace.lua b/src/luaotfload-letterspace.lua index 78df1d7..5a56d31 100644 --- a/src/luaotfload-letterspace.lua +++ b/src/luaotfload-letterspace.lua @@ -61,7 +61,11 @@ local todirect = nodedirect.tonut local tonode = nodedirect.tonode local insert_node_before = nodedirect.insert_before -local free_node = nodedirect.free +local free_node = nodedirect.free -- may cause double free +local free_node = function (n) + logreport ("term", 5, "letterspace", "not calling free_node(%d)", n) + -- free_node (n) +end local copy_node = nodedirect.copy local new_node = nodedirect.new @@ -348,7 +352,7 @@ kerncharacters = function (head) end start = c setfield(s, "components", nil) - --free_node(s) --> double free with multipart components + free_node(s) --> double free with multipart components c = getfield (start, "components") end end |