summaryrefslogtreecommitdiff
path: root/tex/context/base/node-met.lua
diff options
context:
space:
mode:
authorMarius <mariausol@gmail.com>2014-01-23 03:20:15 +0200
committerMarius <mariausol@gmail.com>2014-01-23 03:20:15 +0200
commit3234906ac7cb4eac2077af3dff2b3db452514cd0 (patch)
tree0cbae624d537cf23cdb4bc15aab87d86dd9f71ed /tex/context/base/node-met.lua
parentaa79642f7c1e89b65b77e54f4b03722c4582839c (diff)
downloadcontext-3234906ac7cb4eac2077af3dff2b3db452514cd0.tar.gz
beta 2014.01.23 01:55
Diffstat (limited to 'tex/context/base/node-met.lua')
-rw-r--r--tex/context/base/node-met.lua53
1 files changed, 53 insertions, 0 deletions
diff --git a/tex/context/base/node-met.lua b/tex/context/base/node-met.lua
index c85a53c8e..d52349b4a 100644
--- a/tex/context/base/node-met.lua
+++ b/tex/context/base/node-met.lua
@@ -332,6 +332,28 @@ function nodes.writable_spec(n) -- not pool
return spec
end
+function nodes.copy_spec(old,free) -- also frees
+ if not old then
+ return n_new_node("glue_spec")
+ else
+ local new = n_copy_node(old)
+ if free and old.writable then
+ free_node(old)
+ end
+ return new
+ end
+end
+
+function nodes.free_spec(old)
+ if not old then
+ -- skip
+ elseif old.writable then
+ free_node(old)
+ else
+ -- skip
+ end
+end
+
if gonuts then
function nodes.reference(n)
@@ -668,3 +690,34 @@ end
nodes.keys = keys -- [id][subtype]
nodes.fields = nodefields -- (n)
+
+-- one issue solved in flush_node:
+--
+-- case glue_spec_node:
+-- if (glue_ref_count(p)!=null) {
+-- decr(glue_ref_count(p));
+-- return ;
+-- /*
+-- } else if (! valid_node(p)) {
+-- return ;
+-- */
+-- /*
+-- } else {
+-- free_node(p, get_node_size(type(p), subtype(p)));
+-- return ;
+-- */
+-- }
+-- break ;
+--
+-- or:
+--
+-- case glue_spec_node:
+-- if (glue_ref_count(p)!=null) {
+-- decr(glue_ref_count(p));
+-- return ;
+-- } else if (valid_node(p)) {
+-- free_node(p, get_node_size(type(p), subtype(p)));
+-- return ;
+-- } else {
+-- break ;
+-- }