diff --git a/cpp/ql/src/experimental/Security/CWE/CWE-193/InvalidPointerDeref.ql b/cpp/ql/src/experimental/Security/CWE/CWE-193/InvalidPointerDeref.ql index dbbbc5e787f..19381c42bf4 100644 --- a/cpp/ql/src/experimental/Security/CWE/CWE-193/InvalidPointerDeref.ql +++ b/cpp/ql/src/experimental/Security/CWE/CWE-193/InvalidPointerDeref.ql @@ -23,6 +23,7 @@ import semmle.code.cpp.ir.ValueNumbering import semmle.code.cpp.controlflow.IRGuards import semmle.code.cpp.ir.IR import codeql.util.Unit +import FinalFlow::PathGraph pragma[nomagic] Instruction getABoundIn(SemBound b, IRFunction func) { @@ -318,7 +319,7 @@ module InvalidPointerToDerefBarrier { private module BarrierConfig implements DataFlow::ConfigSig { predicate isSource(DataFlow::Node source) { // The sources is the same as in the sources for `InvalidPointerToDerefConfig`. - invalidPointerToDerefSource(_, source, _) + invalidPointerToDerefSource(_, _, source, _) } additional predicate isSink( @@ -336,7 +337,7 @@ module InvalidPointerToDerefBarrier { private int getInvalidPointerToDerefSourceDelta(DataFlow::Node node) { exists(DataFlow::Node source | flow(source, node) and - invalidPointerToDerefSource(_, source, result) + invalidPointerToDerefSource(_, _, source, result) ) } @@ -373,7 +374,7 @@ module InvalidPointerToDerefBarrier { * by `AllocToInvalidPointerConfig` to a dereference of the pointer. */ module InvalidPointerToDerefConfig implements DataFlow::ConfigSig { - predicate isSource(DataFlow::Node source) { invalidPointerToDerefSource(_, source, _) } + predicate isSource(DataFlow::Node source) { invalidPointerToDerefSource(_, _, source, _) } pragma[inline] predicate isSink(DataFlow::Node sink) { isInvalidPointerDerefSink(sink, _, _, _) } @@ -388,189 +389,155 @@ module InvalidPointerToDerefConfig implements DataFlow::ConfigSig { module InvalidPointerToDerefFlow = DataFlow::Global; /** - * Holds if `pai` is a pointer-arithmetic operation and `source` is a dataflow node with a - * pointer-value that is non-strictly upper bounded by `pai + delta`. + * Holds if `source1` is dataflow node that represents an allocation that flows to the + * left-hand side of the pointer-arithmetic `pai`, and `derefSource` is a dataflow node with + * a pointer-value that is non-strictly upper bounded by `pai + delta`. * * For example, if `pai` is a pointer-arithmetic operation `p + size` in an expression such - * as `(p + size) + 1` and `source` is the node representing `(p + size) + 1`. In this + * as `(p + size) + 1` and `derefSource` is the node representing `(p + size) + 1`. In this * case `delta` is 1. */ predicate invalidPointerToDerefSource( - PointerArithmeticInstruction pai, DataFlow::Node source, int delta + DataFlow::Node source1, PointerArithmeticInstruction pai, DataFlow::Node derefSource, int delta ) { exists( - AllocToInvalidPointerFlow::PathNode1 p1, AllocToInvalidPointerFlow::PathNode2 p2, - DataFlow::Node sink1, DataFlow::Node sink2, int delta0 + AllocToInvalidPointerFlow::PathNode1 pSource1, AllocToInvalidPointerFlow::PathNode1 pSink1, + AllocToInvalidPointerFlow::PathNode2 pSink2, DataFlow::Node sink1, DataFlow::Node sink2, + int delta0 | - pragma[only_bind_out](p1.getNode()) = sink1 and - pragma[only_bind_out](p2.getNode()) = sink2 and - AllocToInvalidPointerFlow::flowPath(_, _, pragma[only_bind_into](p1), pragma[only_bind_into](p2)) and + pragma[only_bind_out](pSource1.getNode()) = source1 and + pragma[only_bind_out](pSink1.getNode()) = sink1 and + pragma[only_bind_out](pSink2.getNode()) = sink2 and + AllocToInvalidPointerFlow::flowPath(pSource1, _, pragma[only_bind_into](pSink1), + pragma[only_bind_into](pSink2)) and // Note that `delta` is not necessarily equal to `delta0`: // `delta0` is the constant offset added to the size of the allocation, and // delta is the constant difference between the pointer-arithmetic instruction // and the instruction computing the address for which we will search for a dereference. isSinkImpl(pai, sink1, sink2, delta0) and - bounded2(source.asInstruction(), pai, delta) and + bounded2(derefSource.asInstruction(), pai, delta) and delta >= 0 and - not source.getBasicBlock() = Barrier2::getABarrierBlock(delta0) + not derefSource.getBasicBlock() = Barrier2::getABarrierBlock(delta0) ) } -newtype TMergedPathNode = - // The path nodes computed by the first projection of `AllocToInvalidPointerConfig` - TPathNode1(AllocToInvalidPointerFlow::PathNode1 p) or - // The path nodes computed by `InvalidPointerToDerefConfig` - TPathNode3(InvalidPointerToDerefFlow::PathNode p) or - // The read/write that uses the invalid pointer identified by `InvalidPointerToDerefConfig`. - // This one is needed because the sink identified by `InvalidPointerToDerefConfig` is the - // pointer, but we want to raise an alert at the dereference. - TPathNodeSink(Instruction i) { - exists(DataFlow::Node n | - InvalidPointerToDerefFlow::flowTo(pragma[only_bind_into](n)) and - isInvalidPointerDerefSink(n, i, _, _) and - i = getASuccessor(n.asInstruction()) - ) - } - -class MergedPathNode extends TMergedPathNode { - string toString() { none() } - - final AllocToInvalidPointerFlow::PathNode1 asPathNode1() { this = TPathNode1(result) } - - final InvalidPointerToDerefFlow::PathNode asPathNode3() { this = TPathNode3(result) } - - final Instruction asSinkNode() { this = TPathNodeSink(result) } - - predicate hasLocationInfo( - string filepath, int startline, int startcolumn, int endline, int endcolumn - ) { - none() - } -} - -class PathNode1 extends MergedPathNode, TPathNode1 { - override string toString() { - exists(AllocToInvalidPointerFlow::PathNode1 p | - this = TPathNode1(p) and - result = p.toString() - ) - } - - override predicate hasLocationInfo( - string filepath, int startline, int startcolumn, int endline, int endcolumn - ) { - this.asPathNode1().hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn) - } -} - -class PathNode3 extends MergedPathNode, TPathNode3 { - override string toString() { - exists(InvalidPointerToDerefFlow::PathNode p | - this = TPathNode3(p) and - result = p.toString() - ) - } - - override predicate hasLocationInfo( - string filepath, int startline, int startcolumn, int endline, int endcolumn - ) { - this.asPathNode3().hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn) - } -} - -class PathSinkNode extends MergedPathNode, TPathNodeSink { - override string toString() { - exists(Instruction i | - this = TPathNodeSink(i) and - result = i.toString() - ) - } - - override predicate hasLocationInfo( - string filepath, int startline, int startcolumn, int endline, int endcolumn - ) { - this.asSinkNode() - .getLocation() - .hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn) - } -} - -query predicate edges(MergedPathNode node1, MergedPathNode node2) { - node1.asPathNode1().getASuccessor() = node2.asPathNode1() - or - joinOn1(_, node1.asPathNode1(), node2.asPathNode3()) - or - node1.asPathNode3().getASuccessor() = node2.asPathNode3() - or - joinOn2(node1.asPathNode3(), node2.asSinkNode(), _, _) -} - -query predicate nodes(MergedPathNode n, string key, string val) { - AllocToInvalidPointerFlow::PathGraph1::nodes(n.asPathNode1(), key, val) - or - InvalidPointerToDerefFlow::PathGraph::nodes(n.asPathNode3(), key, val) - or - key = "semmle.label" and val = n.asSinkNode().toString() -} - -query predicate subpaths( - MergedPathNode arg, MergedPathNode par, MergedPathNode ret, MergedPathNode out +/** + * Holds if `derefSink` is a dataflow node that represents an out-of-bounds address that is about to + * be dereferenced by `operation` (which is either a `StoreInstruction` or `LoadInstruction`), and + * `pai` is the pointer-arithmetic operation that caused the `derefSink` to be out-of-bounds. + */ +predicate derefSinkToOperation( + DataFlow::Node derefSink, PointerArithmeticInstruction pai, DataFlow::Node operation ) { - AllocToInvalidPointerFlow::PathGraph1::subpaths(arg.asPathNode1(), par.asPathNode1(), - ret.asPathNode1(), out.asPathNode1()) - or - InvalidPointerToDerefFlow::PathGraph::subpaths(arg.asPathNode3(), par.asPathNode3(), - ret.asPathNode3(), out.asPathNode3()) + exists(DataFlow::Node source, Instruction i | + InvalidPointerToDerefFlow::flow(pragma[only_bind_into](source), + pragma[only_bind_into](derefSink)) and + invalidPointerToDerefSource(_, pai, source, _) and + isInvalidPointerDerefSink(derefSink, i, _, _) and + i = getASuccessor(derefSink.asInstruction()) and + operation.asInstruction() = i + ) } /** - * Holds if `p1` is a sink of `AllocToInvalidPointerConfig` and `p2` is a source - * of `InvalidPointerToDerefConfig`, and they are connected through `pai`. + * A configuration that represents the full dataflow path all the way from + * the allocation to the dereference. We need this final dataflow traversal + * to ensure that the transition from the sink in `AllocToInvalidPointerConfig` + * to the source in `InvalidPointerToDerefFlow` did not make us construct an + * infeasible path (which can happen since the transition from one configuration + * to the next does not preserve information about call contexts). */ -predicate joinOn1( - PointerArithmeticInstruction pai, AllocToInvalidPointerFlow::PathNode1 p1, - InvalidPointerToDerefFlow::PathNode p2 -) { - isSinkImpl(pai, p1.getNode(), _, _) and - invalidPointerToDerefSource(pai, p2.getNode(), _) +module FinalConfig implements DataFlow::StateConfigSig { + newtype FlowState = + additional TInitial() or + additional TPointerArith(PointerArithmeticInstruction pai) { + invalidPointerToDerefSource(_, pai, _, _) + } + + predicate isSource(DataFlow::Node source, FlowState state) { + state = TInitial() and + exists(DataFlow::Node derefSource | + invalidPointerToDerefSource(source, _, derefSource, _) and + InvalidPointerToDerefFlow::flow(derefSource, _) + ) + } + + predicate isSink(DataFlow::Node sink, FlowState state) { + exists(PointerArithmeticInstruction pai | + derefSinkToOperation(_, pai, sink) and state = TPointerArith(pai) + ) + } + + predicate isAdditionalFlowStep( + DataFlow::Node node1, FlowState state1, DataFlow::Node node2, FlowState state2 + ) { + // A step from the left-hand side of a pointer-arithmetic operation that has been + // identified as creating an out-of-bounds pointer to the result of the pointer-arithmetic + // operation. + exists( + PointerArithmeticInstruction pai, AllocToInvalidPointerFlow::PathNode1 p1, + InvalidPointerToDerefFlow::PathNode p2 + | + isSinkImpl(pai, node1, _, _) and + invalidPointerToDerefSource(_, pai, node2, _) and + node1 = p1.getNode() and + node2 = p2.getNode() and + state1 = TInitial() and + state2 = TPointerArith(pai) + ) + or + // A step from an out-of-bounds address to the operation (which is either a `StoreInstruction` + // or a `LoadInstruction`) that dereferences the address. + // This step exists purely for aesthetic reasons: we want the alert to be placed at the operation + // that causes the dereference, and not at the address that flows into the operation. + state1 = state2 and + exists(DataFlow::Node derefSource, PointerArithmeticInstruction pai | + InvalidPointerToDerefFlow::flow(derefSource, node1) and + invalidPointerToDerefSource(_, pai, derefSource, _) and + state1 = TPointerArith(pai) and + derefSinkToOperation(node1, pai, node2) + ) + } } +module FinalFlow = DataFlow::GlobalWithState; + /** - * Holds if `p1` is a sink of `InvalidPointerToDerefConfig` and `i` is the instruction - * that dereferences `p1`. The string `operation` describes whether the `i` is - * a `StoreInstruction` or `LoadInstruction`. + * Holds if `source` is an allocation that flows into the left-hand side of `pai`, which produces an out-of-bounds + * pointer that flows into an address that is dereferenced by `sink` (which is either a `LoadInstruction` or a + * `StoreInstruction`). The end result is that `sink` writes to an address that is off-by-`delta` from the end of + * the allocation. The string `operation` describes whether the `sink` is a load or a store (which is then used + * to produce the alert message). + * + * Note that multiple `delta`s can exist for a given `(source, pai, sink)` triplet. */ -pragma[inline] -predicate joinOn2(InvalidPointerToDerefFlow::PathNode p1, Instruction i, string operation, int delta) { - isInvalidPointerDerefSink(p1.getNode(), i, operation, delta) -} - predicate hasFlowPath( - MergedPathNode source1, MergedPathNode sink, InvalidPointerToDerefFlow::PathNode source3, - PointerArithmeticInstruction pai, string operation, int delta + FinalFlow::PathNode source, FinalFlow::PathNode sink, PointerArithmeticInstruction pai, + string operation, int delta ) { - exists(InvalidPointerToDerefFlow::PathNode sink3, AllocToInvalidPointerFlow::PathNode1 sink1 | - AllocToInvalidPointerFlow::flowPath(source1.asPathNode1(), _, sink1, _) and - joinOn1(pai, sink1, source3) and - InvalidPointerToDerefFlow::flowPath(source3, sink3) and - joinOn2(sink3, sink.asSinkNode(), operation, delta) + exists( + DataFlow::Node derefSink, DataFlow::Node derefSource, int deltaDerefSourceAndPai, + int deltaDerefSinkAndDerefAddress + | + FinalFlow::flowPath(source, sink) and + sink.getState() = FinalConfig::TPointerArith(pai) and + invalidPointerToDerefSource(source.getNode(), pai, derefSource, deltaDerefSourceAndPai) and + InvalidPointerToDerefFlow::flow(derefSource, derefSink) and + derefSinkToOperation(derefSink, pai, sink.getNode()) and + isInvalidPointerDerefSink(derefSink, sink.getNode().asInstruction(), operation, + deltaDerefSinkAndDerefAddress) and + delta = deltaDerefSourceAndPai + deltaDerefSinkAndDerefAddress ) } from - MergedPathNode source, MergedPathNode sink, int k, string kstr, PointerArithmeticInstruction pai, - string operation, Expr offset, DataFlow::Node n + FinalFlow::PathNode source, FinalFlow::PathNode sink, int k, string kstr, + PointerArithmeticInstruction pai, string operation, Expr offset, DataFlow::Node n where - k = - min(int k2, int k3, InvalidPointerToDerefFlow::PathNode source3 | - hasFlowPath(source, sink, source3, pai, operation, k3) and - invalidPointerToDerefSource(pai, source3.getNode(), k2) - | - k2 + k3 - ) and + k = min(int cand | hasFlowPath(source, sink, pai, operation, cand)) and offset = pai.getRight().getUnconvertedResultExpression() and - n = source.asPathNode1().getNode() and + n = source.getNode() and if k = 0 then kstr = "" else kstr = " + " + k -select sink, source, sink, +select sink.getNode(), source, sink, "This " + operation + " might be out of bounds, as the pointer might be equal to $@ + $@" + kstr + ".", n, n.toString(), offset, offset.toString() diff --git a/cpp/ql/test/experimental/query-tests/Security/CWE/CWE-193/pointer-deref/InvalidPointerDeref.expected b/cpp/ql/test/experimental/query-tests/Security/CWE/CWE-193/pointer-deref/InvalidPointerDeref.expected index 32b068daf81..c8d5741624d 100644 --- a/cpp/ql/test/experimental/query-tests/Security/CWE/CWE-193/pointer-deref/InvalidPointerDeref.expected +++ b/cpp/ql/test/experimental/query-tests/Security/CWE/CWE-193/pointer-deref/InvalidPointerDeref.expected @@ -1,1571 +1,365 @@ edges -| test.cpp:4:15:4:20 | call to malloc | test.cpp:5:15:5:15 | p | -| test.cpp:5:15:5:15 | p | test.cpp:5:15:5:22 | ... + ... | -| test.cpp:5:15:5:15 | p | test.cpp:5:15:5:22 | ... + ... | -| test.cpp:5:15:5:15 | p | test.cpp:5:15:5:22 | ... + ... | -| test.cpp:5:15:5:15 | p | test.cpp:5:15:5:22 | ... + ... | -| test.cpp:5:15:5:15 | p | test.cpp:6:15:6:15 | q | -| test.cpp:5:15:5:15 | p | test.cpp:6:15:6:15 | q | -| test.cpp:5:15:5:15 | p | test.cpp:7:16:7:16 | q | -| test.cpp:5:15:5:15 | p | test.cpp:7:16:7:16 | q | -| test.cpp:5:15:5:15 | p | test.cpp:8:16:8:16 | q | -| test.cpp:5:15:5:15 | p | test.cpp:8:16:8:16 | q | -| test.cpp:5:15:5:15 | p | test.cpp:8:16:8:20 | ... + ... | -| test.cpp:5:15:5:15 | p | test.cpp:9:16:9:16 | q | -| test.cpp:5:15:5:15 | p | test.cpp:9:16:9:16 | q | -| test.cpp:5:15:5:15 | p | test.cpp:10:16:10:16 | q | -| test.cpp:5:15:5:15 | p | test.cpp:10:16:10:16 | q | -| test.cpp:5:15:5:15 | p | test.cpp:11:16:11:16 | q | -| test.cpp:5:15:5:15 | p | test.cpp:11:16:11:16 | q | -| test.cpp:5:15:5:15 | p | test.cpp:12:16:12:16 | q | -| test.cpp:5:15:5:22 | ... + ... | test.cpp:5:15:5:22 | ... + ... | -| test.cpp:5:15:5:22 | ... + ... | test.cpp:5:15:5:22 | ... + ... | -| test.cpp:5:15:5:22 | ... + ... | test.cpp:6:14:6:15 | Load: * ... | -| test.cpp:5:15:5:22 | ... + ... | test.cpp:6:14:6:15 | Load: * ... | -| test.cpp:5:15:5:22 | ... + ... | test.cpp:6:14:6:15 | Load: * ... | -| test.cpp:5:15:5:22 | ... + ... | test.cpp:6:14:6:15 | Load: * ... | -| test.cpp:5:15:5:22 | ... + ... | test.cpp:6:15:6:15 | q | -| test.cpp:5:15:5:22 | ... + ... | test.cpp:6:15:6:15 | q | -| test.cpp:5:15:5:22 | ... + ... | test.cpp:6:15:6:15 | q | -| test.cpp:5:15:5:22 | ... + ... | test.cpp:6:15:6:15 | q | -| test.cpp:5:15:5:22 | ... + ... | test.cpp:7:16:7:16 | q | -| test.cpp:5:15:5:22 | ... + ... | test.cpp:7:16:7:16 | q | -| test.cpp:5:15:5:22 | ... + ... | test.cpp:7:16:7:16 | q | -| test.cpp:5:15:5:22 | ... + ... | test.cpp:7:16:7:16 | q | -| test.cpp:5:15:5:22 | ... + ... | test.cpp:8:14:8:21 | Load: * ... | -| test.cpp:5:15:5:22 | ... + ... | test.cpp:8:14:8:21 | Load: * ... | -| test.cpp:5:15:5:22 | ... + ... | test.cpp:8:14:8:21 | Load: * ... | -| test.cpp:5:15:5:22 | ... + ... | test.cpp:8:14:8:21 | Load: * ... | -| test.cpp:5:15:5:22 | ... + ... | test.cpp:8:16:8:16 | q | -| test.cpp:5:15:5:22 | ... + ... | test.cpp:8:16:8:16 | q | -| test.cpp:5:15:5:22 | ... + ... | test.cpp:8:16:8:16 | q | -| test.cpp:5:15:5:22 | ... + ... | test.cpp:8:16:8:16 | q | -| test.cpp:5:15:5:22 | ... + ... | test.cpp:9:16:9:16 | q | -| test.cpp:5:15:5:22 | ... + ... | test.cpp:9:16:9:16 | q | -| test.cpp:5:15:5:22 | ... + ... | test.cpp:9:16:9:16 | q | -| test.cpp:5:15:5:22 | ... + ... | test.cpp:9:16:9:16 | q | -| test.cpp:5:15:5:22 | ... + ... | test.cpp:10:16:10:16 | q | -| test.cpp:5:15:5:22 | ... + ... | test.cpp:10:16:10:16 | q | -| test.cpp:5:15:5:22 | ... + ... | test.cpp:10:16:10:16 | q | -| test.cpp:5:15:5:22 | ... + ... | test.cpp:10:16:10:16 | q | -| test.cpp:5:15:5:22 | ... + ... | test.cpp:11:16:11:16 | q | -| test.cpp:5:15:5:22 | ... + ... | test.cpp:11:16:11:16 | q | -| test.cpp:5:15:5:22 | ... + ... | test.cpp:11:16:11:16 | q | -| test.cpp:5:15:5:22 | ... + ... | test.cpp:11:16:11:16 | q | -| test.cpp:5:15:5:22 | ... + ... | test.cpp:12:16:12:16 | q | -| test.cpp:5:15:5:22 | ... + ... | test.cpp:12:16:12:16 | q | -| test.cpp:6:15:6:15 | q | test.cpp:6:14:6:15 | Load: * ... | -| test.cpp:6:15:6:15 | q | test.cpp:6:14:6:15 | Load: * ... | -| test.cpp:6:15:6:15 | q | test.cpp:7:16:7:16 | q | -| test.cpp:6:15:6:15 | q | test.cpp:7:16:7:16 | q | -| test.cpp:6:15:6:15 | q | test.cpp:8:14:8:21 | Load: * ... | -| test.cpp:6:15:6:15 | q | test.cpp:8:14:8:21 | Load: * ... | -| test.cpp:6:15:6:15 | q | test.cpp:8:16:8:16 | q | -| test.cpp:6:15:6:15 | q | test.cpp:8:16:8:16 | q | -| test.cpp:6:15:6:15 | q | test.cpp:9:16:9:16 | q | -| test.cpp:6:15:6:15 | q | test.cpp:9:16:9:16 | q | -| test.cpp:6:15:6:15 | q | test.cpp:10:16:10:16 | q | -| test.cpp:6:15:6:15 | q | test.cpp:10:16:10:16 | q | -| test.cpp:6:15:6:15 | q | test.cpp:11:16:11:16 | q | -| test.cpp:6:15:6:15 | q | test.cpp:11:16:11:16 | q | -| test.cpp:6:15:6:15 | q | test.cpp:12:16:12:16 | q | -| test.cpp:7:16:7:16 | q | test.cpp:6:14:6:15 | Load: * ... | -| test.cpp:7:16:7:16 | q | test.cpp:6:14:6:15 | Load: * ... | -| test.cpp:7:16:7:16 | q | test.cpp:8:14:8:21 | Load: * ... | -| test.cpp:7:16:7:16 | q | test.cpp:8:14:8:21 | Load: * ... | -| test.cpp:7:16:7:16 | q | test.cpp:8:16:8:16 | q | -| test.cpp:7:16:7:16 | q | test.cpp:8:16:8:16 | q | -| test.cpp:7:16:7:16 | q | test.cpp:9:16:9:16 | q | -| test.cpp:7:16:7:16 | q | test.cpp:9:16:9:16 | q | -| test.cpp:7:16:7:16 | q | test.cpp:10:16:10:16 | q | -| test.cpp:7:16:7:16 | q | test.cpp:10:16:10:16 | q | -| test.cpp:7:16:7:16 | q | test.cpp:11:16:11:16 | q | -| test.cpp:7:16:7:16 | q | test.cpp:11:16:11:16 | q | -| test.cpp:7:16:7:16 | q | test.cpp:12:16:12:16 | q | -| test.cpp:8:16:8:16 | q | test.cpp:6:14:6:15 | Load: * ... | -| test.cpp:8:16:8:16 | q | test.cpp:6:14:6:15 | Load: * ... | -| test.cpp:8:16:8:16 | q | test.cpp:8:14:8:21 | Load: * ... | -| test.cpp:8:16:8:16 | q | test.cpp:8:14:8:21 | Load: * ... | -| test.cpp:8:16:8:16 | q | test.cpp:9:16:9:16 | q | -| test.cpp:8:16:8:16 | q | test.cpp:9:16:9:16 | q | -| test.cpp:8:16:8:16 | q | test.cpp:10:16:10:16 | q | -| test.cpp:8:16:8:16 | q | test.cpp:10:16:10:16 | q | -| test.cpp:8:16:8:16 | q | test.cpp:11:16:11:16 | q | -| test.cpp:8:16:8:16 | q | test.cpp:11:16:11:16 | q | -| test.cpp:8:16:8:16 | q | test.cpp:12:16:12:16 | q | -| test.cpp:8:16:8:20 | ... + ... | test.cpp:8:14:8:21 | Load: * ... | -| test.cpp:9:16:9:16 | q | test.cpp:6:14:6:15 | Load: * ... | -| test.cpp:9:16:9:16 | q | test.cpp:6:14:6:15 | Load: * ... | -| test.cpp:9:16:9:16 | q | test.cpp:8:14:8:21 | Load: * ... | -| test.cpp:9:16:9:16 | q | test.cpp:8:14:8:21 | Load: * ... | -| test.cpp:9:16:9:16 | q | test.cpp:10:16:10:16 | q | -| test.cpp:9:16:9:16 | q | test.cpp:10:16:10:16 | q | -| test.cpp:9:16:9:16 | q | test.cpp:11:16:11:16 | q | -| test.cpp:9:16:9:16 | q | test.cpp:11:16:11:16 | q | -| test.cpp:9:16:9:16 | q | test.cpp:12:16:12:16 | q | -| test.cpp:10:16:10:16 | q | test.cpp:6:14:6:15 | Load: * ... | -| test.cpp:10:16:10:16 | q | test.cpp:6:14:6:15 | Load: * ... | -| test.cpp:10:16:10:16 | q | test.cpp:8:14:8:21 | Load: * ... | -| test.cpp:10:16:10:16 | q | test.cpp:8:14:8:21 | Load: * ... | -| test.cpp:10:16:10:16 | q | test.cpp:11:16:11:16 | q | -| test.cpp:10:16:10:16 | q | test.cpp:11:16:11:16 | q | -| test.cpp:10:16:10:16 | q | test.cpp:12:16:12:16 | q | -| test.cpp:11:16:11:16 | q | test.cpp:6:14:6:15 | Load: * ... | -| test.cpp:11:16:11:16 | q | test.cpp:6:14:6:15 | Load: * ... | -| test.cpp:11:16:11:16 | q | test.cpp:8:14:8:21 | Load: * ... | -| test.cpp:11:16:11:16 | q | test.cpp:8:14:8:21 | Load: * ... | -| test.cpp:11:16:11:16 | q | test.cpp:12:16:12:16 | q | -| test.cpp:12:16:12:16 | q | test.cpp:6:14:6:15 | Load: * ... | -| test.cpp:12:16:12:16 | q | test.cpp:8:14:8:21 | Load: * ... | -| test.cpp:16:15:16:20 | call to malloc | test.cpp:17:15:17:15 | p | -| test.cpp:17:15:17:15 | p | test.cpp:17:15:17:22 | ... + ... | -| test.cpp:17:15:17:15 | p | test.cpp:20:16:20:20 | ... + ... | -| test.cpp:17:15:17:22 | ... + ... | test.cpp:20:14:20:21 | Load: * ... | -| test.cpp:20:16:20:20 | ... + ... | test.cpp:20:14:20:21 | Load: * ... | -| test.cpp:28:15:28:20 | call to malloc | test.cpp:29:15:29:15 | p | -| test.cpp:29:15:29:15 | p | test.cpp:29:15:29:28 | ... + ... | -| test.cpp:29:15:29:15 | p | test.cpp:29:15:29:28 | ... + ... | -| test.cpp:29:15:29:15 | p | test.cpp:29:15:29:28 | ... + ... | -| test.cpp:29:15:29:15 | p | test.cpp:29:15:29:28 | ... + ... | -| test.cpp:29:15:29:15 | p | test.cpp:30:15:30:15 | q | -| test.cpp:29:15:29:15 | p | test.cpp:30:15:30:15 | q | -| test.cpp:29:15:29:15 | p | test.cpp:31:16:31:16 | q | -| test.cpp:29:15:29:15 | p | test.cpp:31:16:31:16 | q | -| test.cpp:29:15:29:15 | p | test.cpp:32:16:32:16 | q | -| test.cpp:29:15:29:15 | p | test.cpp:32:16:32:16 | q | -| test.cpp:29:15:29:15 | p | test.cpp:32:16:32:20 | ... + ... | -| test.cpp:29:15:29:15 | p | test.cpp:33:16:33:16 | q | -| test.cpp:29:15:29:15 | p | test.cpp:33:16:33:16 | q | -| test.cpp:29:15:29:15 | p | test.cpp:34:16:34:16 | q | -| test.cpp:29:15:29:15 | p | test.cpp:34:16:34:16 | q | -| test.cpp:29:15:29:15 | p | test.cpp:35:16:35:16 | q | -| test.cpp:29:15:29:15 | p | test.cpp:35:16:35:16 | q | -| test.cpp:29:15:29:15 | p | test.cpp:36:16:36:16 | q | -| test.cpp:29:15:29:28 | ... + ... | test.cpp:29:15:29:28 | ... + ... | -| test.cpp:29:15:29:28 | ... + ... | test.cpp:29:15:29:28 | ... + ... | -| test.cpp:29:15:29:28 | ... + ... | test.cpp:30:14:30:15 | Load: * ... | -| test.cpp:29:15:29:28 | ... + ... | test.cpp:30:14:30:15 | Load: * ... | -| test.cpp:29:15:29:28 | ... + ... | test.cpp:30:14:30:15 | Load: * ... | -| test.cpp:29:15:29:28 | ... + ... | test.cpp:30:14:30:15 | Load: * ... | -| test.cpp:29:15:29:28 | ... + ... | test.cpp:30:15:30:15 | q | -| test.cpp:29:15:29:28 | ... + ... | test.cpp:30:15:30:15 | q | -| test.cpp:29:15:29:28 | ... + ... | test.cpp:30:15:30:15 | q | -| test.cpp:29:15:29:28 | ... + ... | test.cpp:30:15:30:15 | q | -| test.cpp:29:15:29:28 | ... + ... | test.cpp:31:16:31:16 | q | -| test.cpp:29:15:29:28 | ... + ... | test.cpp:31:16:31:16 | q | -| test.cpp:29:15:29:28 | ... + ... | test.cpp:31:16:31:16 | q | -| test.cpp:29:15:29:28 | ... + ... | test.cpp:31:16:31:16 | q | -| test.cpp:29:15:29:28 | ... + ... | test.cpp:32:14:32:21 | Load: * ... | -| test.cpp:29:15:29:28 | ... + ... | test.cpp:32:14:32:21 | Load: * ... | -| test.cpp:29:15:29:28 | ... + ... | test.cpp:32:14:32:21 | Load: * ... | -| test.cpp:29:15:29:28 | ... + ... | test.cpp:32:14:32:21 | Load: * ... | -| test.cpp:29:15:29:28 | ... + ... | test.cpp:32:16:32:16 | q | -| test.cpp:29:15:29:28 | ... + ... | test.cpp:32:16:32:16 | q | -| test.cpp:29:15:29:28 | ... + ... | test.cpp:32:16:32:16 | q | -| test.cpp:29:15:29:28 | ... + ... | test.cpp:32:16:32:16 | q | -| test.cpp:29:15:29:28 | ... + ... | test.cpp:33:16:33:16 | q | -| test.cpp:29:15:29:28 | ... + ... | test.cpp:33:16:33:16 | q | -| test.cpp:29:15:29:28 | ... + ... | test.cpp:33:16:33:16 | q | -| test.cpp:29:15:29:28 | ... + ... | test.cpp:33:16:33:16 | q | -| test.cpp:29:15:29:28 | ... + ... | test.cpp:34:16:34:16 | q | -| test.cpp:29:15:29:28 | ... + ... | test.cpp:34:16:34:16 | q | -| test.cpp:29:15:29:28 | ... + ... | test.cpp:34:16:34:16 | q | -| test.cpp:29:15:29:28 | ... + ... | test.cpp:34:16:34:16 | q | -| test.cpp:29:15:29:28 | ... + ... | test.cpp:35:16:35:16 | q | -| test.cpp:29:15:29:28 | ... + ... | test.cpp:35:16:35:16 | q | -| test.cpp:29:15:29:28 | ... + ... | test.cpp:35:16:35:16 | q | -| test.cpp:29:15:29:28 | ... + ... | test.cpp:35:16:35:16 | q | -| test.cpp:29:15:29:28 | ... + ... | test.cpp:36:16:36:16 | q | -| test.cpp:29:15:29:28 | ... + ... | test.cpp:36:16:36:16 | q | -| test.cpp:30:15:30:15 | q | test.cpp:30:14:30:15 | Load: * ... | -| test.cpp:30:15:30:15 | q | test.cpp:30:14:30:15 | Load: * ... | -| test.cpp:30:15:30:15 | q | test.cpp:31:16:31:16 | q | -| test.cpp:30:15:30:15 | q | test.cpp:31:16:31:16 | q | -| test.cpp:30:15:30:15 | q | test.cpp:32:14:32:21 | Load: * ... | -| test.cpp:30:15:30:15 | q | test.cpp:32:14:32:21 | Load: * ... | -| test.cpp:30:15:30:15 | q | test.cpp:32:16:32:16 | q | -| test.cpp:30:15:30:15 | q | test.cpp:32:16:32:16 | q | -| test.cpp:30:15:30:15 | q | test.cpp:33:16:33:16 | q | -| test.cpp:30:15:30:15 | q | test.cpp:33:16:33:16 | q | -| test.cpp:30:15:30:15 | q | test.cpp:34:16:34:16 | q | -| test.cpp:30:15:30:15 | q | test.cpp:34:16:34:16 | q | -| test.cpp:30:15:30:15 | q | test.cpp:35:16:35:16 | q | -| test.cpp:30:15:30:15 | q | test.cpp:35:16:35:16 | q | -| test.cpp:30:15:30:15 | q | test.cpp:36:16:36:16 | q | -| test.cpp:31:16:31:16 | q | test.cpp:30:14:30:15 | Load: * ... | -| test.cpp:31:16:31:16 | q | test.cpp:30:14:30:15 | Load: * ... | -| test.cpp:31:16:31:16 | q | test.cpp:32:14:32:21 | Load: * ... | -| test.cpp:31:16:31:16 | q | test.cpp:32:14:32:21 | Load: * ... | -| test.cpp:31:16:31:16 | q | test.cpp:32:16:32:16 | q | -| test.cpp:31:16:31:16 | q | test.cpp:32:16:32:16 | q | -| test.cpp:31:16:31:16 | q | test.cpp:33:16:33:16 | q | -| test.cpp:31:16:31:16 | q | test.cpp:33:16:33:16 | q | -| test.cpp:31:16:31:16 | q | test.cpp:34:16:34:16 | q | -| test.cpp:31:16:31:16 | q | test.cpp:34:16:34:16 | q | -| test.cpp:31:16:31:16 | q | test.cpp:35:16:35:16 | q | -| test.cpp:31:16:31:16 | q | test.cpp:35:16:35:16 | q | -| test.cpp:31:16:31:16 | q | test.cpp:36:16:36:16 | q | -| test.cpp:32:16:32:16 | q | test.cpp:30:14:30:15 | Load: * ... | -| test.cpp:32:16:32:16 | q | test.cpp:30:14:30:15 | Load: * ... | -| test.cpp:32:16:32:16 | q | test.cpp:32:14:32:21 | Load: * ... | -| test.cpp:32:16:32:16 | q | test.cpp:32:14:32:21 | Load: * ... | -| test.cpp:32:16:32:16 | q | test.cpp:33:16:33:16 | q | -| test.cpp:32:16:32:16 | q | test.cpp:33:16:33:16 | q | -| test.cpp:32:16:32:16 | q | test.cpp:34:16:34:16 | q | -| test.cpp:32:16:32:16 | q | test.cpp:34:16:34:16 | q | -| test.cpp:32:16:32:16 | q | test.cpp:35:16:35:16 | q | -| test.cpp:32:16:32:16 | q | test.cpp:35:16:35:16 | q | -| test.cpp:32:16:32:16 | q | test.cpp:36:16:36:16 | q | -| test.cpp:32:16:32:20 | ... + ... | test.cpp:32:14:32:21 | Load: * ... | -| test.cpp:33:16:33:16 | q | test.cpp:30:14:30:15 | Load: * ... | -| test.cpp:33:16:33:16 | q | test.cpp:30:14:30:15 | Load: * ... | -| test.cpp:33:16:33:16 | q | test.cpp:32:14:32:21 | Load: * ... | -| test.cpp:33:16:33:16 | q | test.cpp:32:14:32:21 | Load: * ... | -| test.cpp:33:16:33:16 | q | test.cpp:34:16:34:16 | q | -| test.cpp:33:16:33:16 | q | test.cpp:34:16:34:16 | q | -| test.cpp:33:16:33:16 | q | test.cpp:35:16:35:16 | q | -| test.cpp:33:16:33:16 | q | test.cpp:35:16:35:16 | q | -| test.cpp:33:16:33:16 | q | test.cpp:36:16:36:16 | q | -| test.cpp:34:16:34:16 | q | test.cpp:30:14:30:15 | Load: * ... | -| test.cpp:34:16:34:16 | q | test.cpp:30:14:30:15 | Load: * ... | -| test.cpp:34:16:34:16 | q | test.cpp:32:14:32:21 | Load: * ... | -| test.cpp:34:16:34:16 | q | test.cpp:32:14:32:21 | Load: * ... | -| test.cpp:34:16:34:16 | q | test.cpp:35:16:35:16 | q | -| test.cpp:34:16:34:16 | q | test.cpp:35:16:35:16 | q | -| test.cpp:34:16:34:16 | q | test.cpp:36:16:36:16 | q | -| test.cpp:35:16:35:16 | q | test.cpp:30:14:30:15 | Load: * ... | -| test.cpp:35:16:35:16 | q | test.cpp:30:14:30:15 | Load: * ... | -| test.cpp:35:16:35:16 | q | test.cpp:32:14:32:21 | Load: * ... | -| test.cpp:35:16:35:16 | q | test.cpp:32:14:32:21 | Load: * ... | -| test.cpp:35:16:35:16 | q | test.cpp:36:16:36:16 | q | -| test.cpp:36:16:36:16 | q | test.cpp:30:14:30:15 | Load: * ... | -| test.cpp:36:16:36:16 | q | test.cpp:32:14:32:21 | Load: * ... | -| test.cpp:40:15:40:20 | call to malloc | test.cpp:41:15:41:15 | p | -| test.cpp:41:15:41:15 | p | test.cpp:41:15:41:28 | ... + ... | -| test.cpp:41:15:41:15 | p | test.cpp:41:15:41:28 | ... + ... | -| test.cpp:41:15:41:15 | p | test.cpp:41:15:41:28 | ... + ... | -| test.cpp:41:15:41:15 | p | test.cpp:41:15:41:28 | ... + ... | -| test.cpp:41:15:41:15 | p | test.cpp:42:15:42:15 | q | -| test.cpp:41:15:41:15 | p | test.cpp:42:15:42:15 | q | -| test.cpp:41:15:41:15 | p | test.cpp:43:16:43:16 | q | -| test.cpp:41:15:41:15 | p | test.cpp:43:16:43:16 | q | -| test.cpp:41:15:41:15 | p | test.cpp:44:16:44:16 | q | -| test.cpp:41:15:41:15 | p | test.cpp:44:16:44:16 | q | -| test.cpp:41:15:41:15 | p | test.cpp:44:16:44:20 | ... + ... | -| test.cpp:41:15:41:15 | p | test.cpp:45:16:45:16 | q | -| test.cpp:41:15:41:15 | p | test.cpp:45:16:45:16 | q | -| test.cpp:41:15:41:15 | p | test.cpp:46:16:46:16 | q | -| test.cpp:41:15:41:15 | p | test.cpp:46:16:46:16 | q | -| test.cpp:41:15:41:15 | p | test.cpp:47:16:47:16 | q | -| test.cpp:41:15:41:15 | p | test.cpp:47:16:47:16 | q | -| test.cpp:41:15:41:15 | p | test.cpp:48:16:48:16 | q | -| test.cpp:41:15:41:28 | ... + ... | test.cpp:41:15:41:28 | ... + ... | -| test.cpp:41:15:41:28 | ... + ... | test.cpp:41:15:41:28 | ... + ... | -| test.cpp:41:15:41:28 | ... + ... | test.cpp:42:14:42:15 | Load: * ... | -| test.cpp:41:15:41:28 | ... + ... | test.cpp:42:14:42:15 | Load: * ... | -| test.cpp:41:15:41:28 | ... + ... | test.cpp:42:14:42:15 | Load: * ... | -| test.cpp:41:15:41:28 | ... + ... | test.cpp:42:14:42:15 | Load: * ... | -| test.cpp:41:15:41:28 | ... + ... | test.cpp:42:15:42:15 | q | -| test.cpp:41:15:41:28 | ... + ... | test.cpp:42:15:42:15 | q | -| test.cpp:41:15:41:28 | ... + ... | test.cpp:42:15:42:15 | q | -| test.cpp:41:15:41:28 | ... + ... | test.cpp:42:15:42:15 | q | -| test.cpp:41:15:41:28 | ... + ... | test.cpp:43:16:43:16 | q | -| test.cpp:41:15:41:28 | ... + ... | test.cpp:43:16:43:16 | q | -| test.cpp:41:15:41:28 | ... + ... | test.cpp:43:16:43:16 | q | -| test.cpp:41:15:41:28 | ... + ... | test.cpp:43:16:43:16 | q | -| test.cpp:41:15:41:28 | ... + ... | test.cpp:44:14:44:21 | Load: * ... | -| test.cpp:41:15:41:28 | ... + ... | test.cpp:44:14:44:21 | Load: * ... | -| test.cpp:41:15:41:28 | ... + ... | test.cpp:44:14:44:21 | Load: * ... | -| test.cpp:41:15:41:28 | ... + ... | test.cpp:44:14:44:21 | Load: * ... | -| test.cpp:41:15:41:28 | ... + ... | test.cpp:44:16:44:16 | q | -| test.cpp:41:15:41:28 | ... + ... | test.cpp:44:16:44:16 | q | -| test.cpp:41:15:41:28 | ... + ... | test.cpp:44:16:44:16 | q | -| test.cpp:41:15:41:28 | ... + ... | test.cpp:44:16:44:16 | q | -| test.cpp:41:15:41:28 | ... + ... | test.cpp:45:16:45:16 | q | -| test.cpp:41:15:41:28 | ... + ... | test.cpp:45:16:45:16 | q | -| test.cpp:41:15:41:28 | ... + ... | test.cpp:45:16:45:16 | q | -| test.cpp:41:15:41:28 | ... + ... | test.cpp:45:16:45:16 | q | -| test.cpp:41:15:41:28 | ... + ... | test.cpp:46:16:46:16 | q | -| test.cpp:41:15:41:28 | ... + ... | test.cpp:46:16:46:16 | q | -| test.cpp:41:15:41:28 | ... + ... | test.cpp:46:16:46:16 | q | -| test.cpp:41:15:41:28 | ... + ... | test.cpp:46:16:46:16 | q | -| test.cpp:41:15:41:28 | ... + ... | test.cpp:47:16:47:16 | q | -| test.cpp:41:15:41:28 | ... + ... | test.cpp:47:16:47:16 | q | -| test.cpp:41:15:41:28 | ... + ... | test.cpp:47:16:47:16 | q | -| test.cpp:41:15:41:28 | ... + ... | test.cpp:47:16:47:16 | q | -| test.cpp:41:15:41:28 | ... + ... | test.cpp:48:16:48:16 | q | -| test.cpp:41:15:41:28 | ... + ... | test.cpp:48:16:48:16 | q | -| test.cpp:42:15:42:15 | q | test.cpp:42:14:42:15 | Load: * ... | -| test.cpp:42:15:42:15 | q | test.cpp:42:14:42:15 | Load: * ... | -| test.cpp:42:15:42:15 | q | test.cpp:43:16:43:16 | q | -| test.cpp:42:15:42:15 | q | test.cpp:43:16:43:16 | q | -| test.cpp:42:15:42:15 | q | test.cpp:44:14:44:21 | Load: * ... | -| test.cpp:42:15:42:15 | q | test.cpp:44:14:44:21 | Load: * ... | -| test.cpp:42:15:42:15 | q | test.cpp:44:16:44:16 | q | -| test.cpp:42:15:42:15 | q | test.cpp:44:16:44:16 | q | -| test.cpp:42:15:42:15 | q | test.cpp:45:16:45:16 | q | -| test.cpp:42:15:42:15 | q | test.cpp:45:16:45:16 | q | -| test.cpp:42:15:42:15 | q | test.cpp:46:16:46:16 | q | -| test.cpp:42:15:42:15 | q | test.cpp:46:16:46:16 | q | -| test.cpp:42:15:42:15 | q | test.cpp:47:16:47:16 | q | -| test.cpp:42:15:42:15 | q | test.cpp:47:16:47:16 | q | -| test.cpp:42:15:42:15 | q | test.cpp:48:16:48:16 | q | -| test.cpp:43:16:43:16 | q | test.cpp:42:14:42:15 | Load: * ... | -| test.cpp:43:16:43:16 | q | test.cpp:42:14:42:15 | Load: * ... | -| test.cpp:43:16:43:16 | q | test.cpp:44:14:44:21 | Load: * ... | -| test.cpp:43:16:43:16 | q | test.cpp:44:14:44:21 | Load: * ... | -| test.cpp:43:16:43:16 | q | test.cpp:44:16:44:16 | q | -| test.cpp:43:16:43:16 | q | test.cpp:44:16:44:16 | q | -| test.cpp:43:16:43:16 | q | test.cpp:45:16:45:16 | q | -| test.cpp:43:16:43:16 | q | test.cpp:45:16:45:16 | q | -| test.cpp:43:16:43:16 | q | test.cpp:46:16:46:16 | q | -| test.cpp:43:16:43:16 | q | test.cpp:46:16:46:16 | q | -| test.cpp:43:16:43:16 | q | test.cpp:47:16:47:16 | q | -| test.cpp:43:16:43:16 | q | test.cpp:47:16:47:16 | q | -| test.cpp:43:16:43:16 | q | test.cpp:48:16:48:16 | q | -| test.cpp:44:16:44:16 | q | test.cpp:42:14:42:15 | Load: * ... | -| test.cpp:44:16:44:16 | q | test.cpp:42:14:42:15 | Load: * ... | -| test.cpp:44:16:44:16 | q | test.cpp:44:14:44:21 | Load: * ... | -| test.cpp:44:16:44:16 | q | test.cpp:44:14:44:21 | Load: * ... | -| test.cpp:44:16:44:16 | q | test.cpp:45:16:45:16 | q | -| test.cpp:44:16:44:16 | q | test.cpp:45:16:45:16 | q | -| test.cpp:44:16:44:16 | q | test.cpp:46:16:46:16 | q | -| test.cpp:44:16:44:16 | q | test.cpp:46:16:46:16 | q | -| test.cpp:44:16:44:16 | q | test.cpp:47:16:47:16 | q | -| test.cpp:44:16:44:16 | q | test.cpp:47:16:47:16 | q | -| test.cpp:44:16:44:16 | q | test.cpp:48:16:48:16 | q | -| test.cpp:44:16:44:20 | ... + ... | test.cpp:44:14:44:21 | Load: * ... | -| test.cpp:45:16:45:16 | q | test.cpp:42:14:42:15 | Load: * ... | -| test.cpp:45:16:45:16 | q | test.cpp:42:14:42:15 | Load: * ... | -| test.cpp:45:16:45:16 | q | test.cpp:44:14:44:21 | Load: * ... | -| test.cpp:45:16:45:16 | q | test.cpp:44:14:44:21 | Load: * ... | -| test.cpp:45:16:45:16 | q | test.cpp:46:16:46:16 | q | -| test.cpp:45:16:45:16 | q | test.cpp:46:16:46:16 | q | -| test.cpp:45:16:45:16 | q | test.cpp:47:16:47:16 | q | -| test.cpp:45:16:45:16 | q | test.cpp:47:16:47:16 | q | -| test.cpp:45:16:45:16 | q | test.cpp:48:16:48:16 | q | -| test.cpp:46:16:46:16 | q | test.cpp:42:14:42:15 | Load: * ... | -| test.cpp:46:16:46:16 | q | test.cpp:42:14:42:15 | Load: * ... | -| test.cpp:46:16:46:16 | q | test.cpp:44:14:44:21 | Load: * ... | -| test.cpp:46:16:46:16 | q | test.cpp:44:14:44:21 | Load: * ... | -| test.cpp:46:16:46:16 | q | test.cpp:47:16:47:16 | q | -| test.cpp:46:16:46:16 | q | test.cpp:47:16:47:16 | q | -| test.cpp:46:16:46:16 | q | test.cpp:48:16:48:16 | q | -| test.cpp:47:16:47:16 | q | test.cpp:42:14:42:15 | Load: * ... | -| test.cpp:47:16:47:16 | q | test.cpp:42:14:42:15 | Load: * ... | -| test.cpp:47:16:47:16 | q | test.cpp:44:14:44:21 | Load: * ... | -| test.cpp:47:16:47:16 | q | test.cpp:44:14:44:21 | Load: * ... | -| test.cpp:47:16:47:16 | q | test.cpp:48:16:48:16 | q | -| test.cpp:48:16:48:16 | q | test.cpp:42:14:42:15 | Load: * ... | -| test.cpp:48:16:48:16 | q | test.cpp:44:14:44:21 | Load: * ... | -| test.cpp:51:7:51:14 | mk_array indirection | test.cpp:60:19:60:26 | call to mk_array | +| test.cpp:4:15:4:20 | call to malloc | test.cpp:5:15:5:22 | ... + ... | +| test.cpp:4:15:4:20 | call to malloc | test.cpp:5:15:5:22 | ... + ... | +| test.cpp:4:15:4:20 | call to malloc | test.cpp:6:14:6:15 | * ... | +| test.cpp:4:15:4:20 | call to malloc | test.cpp:8:14:8:21 | * ... | +| test.cpp:5:15:5:22 | ... + ... | test.cpp:6:14:6:15 | * ... | +| test.cpp:5:15:5:22 | ... + ... | test.cpp:6:14:6:15 | * ... | +| test.cpp:5:15:5:22 | ... + ... | test.cpp:8:14:8:21 | * ... | +| test.cpp:5:15:5:22 | ... + ... | test.cpp:8:14:8:21 | * ... | +| test.cpp:16:15:16:20 | call to malloc | test.cpp:20:14:20:21 | * ... | +| test.cpp:28:15:28:20 | call to malloc | test.cpp:29:15:29:28 | ... + ... | +| test.cpp:28:15:28:20 | call to malloc | test.cpp:29:15:29:28 | ... + ... | +| test.cpp:28:15:28:20 | call to malloc | test.cpp:30:14:30:15 | * ... | +| test.cpp:28:15:28:20 | call to malloc | test.cpp:32:14:32:21 | * ... | +| test.cpp:29:15:29:28 | ... + ... | test.cpp:30:14:30:15 | * ... | +| test.cpp:29:15:29:28 | ... + ... | test.cpp:30:14:30:15 | * ... | +| test.cpp:29:15:29:28 | ... + ... | test.cpp:32:14:32:21 | * ... | +| test.cpp:29:15:29:28 | ... + ... | test.cpp:32:14:32:21 | * ... | +| test.cpp:40:15:40:20 | call to malloc | test.cpp:41:15:41:28 | ... + ... | +| test.cpp:40:15:40:20 | call to malloc | test.cpp:41:15:41:28 | ... + ... | +| test.cpp:40:15:40:20 | call to malloc | test.cpp:42:14:42:15 | * ... | +| test.cpp:40:15:40:20 | call to malloc | test.cpp:44:14:44:21 | * ... | +| test.cpp:41:15:41:28 | ... + ... | test.cpp:42:14:42:15 | * ... | +| test.cpp:41:15:41:28 | ... + ... | test.cpp:42:14:42:15 | * ... | +| test.cpp:41:15:41:28 | ... + ... | test.cpp:44:14:44:21 | * ... | +| test.cpp:41:15:41:28 | ... + ... | test.cpp:44:14:44:21 | * ... | | test.cpp:51:33:51:35 | end | test.cpp:60:34:60:37 | mk_array output argument | -| test.cpp:52:19:52:24 | call to malloc | test.cpp:51:7:51:14 | mk_array indirection | -| test.cpp:52:19:52:24 | call to malloc | test.cpp:53:12:53:16 | begin | +| test.cpp:52:19:52:24 | call to malloc | test.cpp:53:5:53:23 | ... = ... | +| test.cpp:52:19:52:24 | call to malloc | test.cpp:53:12:53:23 | ... + ... | | test.cpp:53:5:53:23 | ... = ... | test.cpp:51:33:51:35 | end | -| test.cpp:53:12:53:16 | begin | test.cpp:53:5:53:23 | ... = ... | -| test.cpp:53:12:53:16 | begin | test.cpp:53:12:53:23 | ... + ... | | test.cpp:53:12:53:23 | ... + ... | test.cpp:51:33:51:35 | end | -| test.cpp:60:19:60:26 | call to mk_array | test.cpp:62:39:62:39 | p | -| test.cpp:60:19:60:26 | call to mk_array | test.cpp:66:39:66:39 | p | -| test.cpp:60:19:60:26 | call to mk_array | test.cpp:70:38:70:38 | p | -| test.cpp:60:34:60:37 | mk_array output argument | test.cpp:62:32:62:34 | end | -| test.cpp:60:34:60:37 | mk_array output argument | test.cpp:66:32:66:34 | end | -| test.cpp:60:34:60:37 | mk_array output argument | test.cpp:70:31:70:33 | end | -| test.cpp:62:32:62:34 | end | test.cpp:67:9:67:14 | Store: ... = ... | -| test.cpp:66:32:66:34 | end | test.cpp:67:9:67:14 | Store: ... = ... | -| test.cpp:70:31:70:33 | end | test.cpp:67:9:67:14 | Store: ... = ... | -| test.cpp:80:9:80:16 | mk_array indirection [begin] | test.cpp:89:19:89:26 | call to mk_array [begin] | -| test.cpp:80:9:80:16 | mk_array indirection [begin] | test.cpp:119:18:119:25 | call to mk_array [begin] | +| test.cpp:60:34:60:37 | mk_array output argument | test.cpp:67:9:67:14 | ... = ... | | test.cpp:80:9:80:16 | mk_array indirection [end] | test.cpp:89:19:89:26 | call to mk_array [end] | | test.cpp:80:9:80:16 | mk_array indirection [end] | test.cpp:119:18:119:25 | call to mk_array [end] | | test.cpp:82:5:82:28 | ... = ... | test.cpp:82:9:82:13 | arr indirection [post update] [begin] | -| test.cpp:82:9:82:13 | arr indirection [post update] [begin] | test.cpp:83:5:83:7 | arr indirection [begin] | | test.cpp:82:9:82:13 | arr indirection [post update] [begin] | test.cpp:83:15:83:17 | arr indirection [begin] | | test.cpp:82:17:82:22 | call to malloc | test.cpp:82:5:82:28 | ... = ... | -| test.cpp:83:5:83:7 | arr indirection [begin] | test.cpp:80:9:80:16 | mk_array indirection [begin] | | test.cpp:83:5:83:30 | ... = ... | test.cpp:83:9:83:11 | arr indirection [post update] [end] | | test.cpp:83:9:83:11 | arr indirection [post update] [end] | test.cpp:80:9:80:16 | mk_array indirection [end] | | test.cpp:83:15:83:17 | arr indirection [begin] | test.cpp:83:19:83:23 | begin indirection | | test.cpp:83:15:83:30 | ... + ... | test.cpp:83:5:83:30 | ... = ... | -| test.cpp:83:19:83:23 | begin | test.cpp:83:5:83:30 | ... = ... | -| test.cpp:83:19:83:23 | begin | test.cpp:83:15:83:30 | ... + ... | -| test.cpp:83:19:83:23 | begin indirection | test.cpp:83:19:83:23 | begin | -| test.cpp:89:19:89:26 | call to mk_array [begin] | test.cpp:91:20:91:22 | arr indirection [begin] | -| test.cpp:89:19:89:26 | call to mk_array [begin] | test.cpp:95:20:95:22 | arr indirection [begin] | -| test.cpp:89:19:89:26 | call to mk_array [begin] | test.cpp:99:20:99:22 | arr indirection [begin] | +| test.cpp:83:19:83:23 | begin indirection | test.cpp:83:5:83:30 | ... = ... | +| test.cpp:83:19:83:23 | begin indirection | test.cpp:83:15:83:30 | ... + ... | | test.cpp:89:19:89:26 | call to mk_array [end] | test.cpp:91:36:91:38 | arr indirection [end] | | test.cpp:89:19:89:26 | call to mk_array [end] | test.cpp:95:36:95:38 | arr indirection [end] | -| test.cpp:89:19:89:26 | call to mk_array [end] | test.cpp:99:35:99:37 | arr indirection [end] | -| test.cpp:91:20:91:22 | arr indirection [begin] | test.cpp:91:24:91:28 | begin | -| test.cpp:91:20:91:22 | arr indirection [begin] | test.cpp:91:24:91:28 | begin indirection | -| test.cpp:91:24:91:28 | begin | test.cpp:91:47:91:47 | p | -| test.cpp:91:24:91:28 | begin indirection | test.cpp:91:47:91:47 | p | -| test.cpp:91:36:91:38 | arr indirection [end] | test.cpp:91:40:91:42 | end | | test.cpp:91:36:91:38 | arr indirection [end] | test.cpp:91:40:91:42 | end indirection | -| test.cpp:91:40:91:42 | end | test.cpp:96:9:96:14 | Store: ... = ... | -| test.cpp:91:40:91:42 | end indirection | test.cpp:91:40:91:42 | end | -| test.cpp:95:20:95:22 | arr indirection [begin] | test.cpp:95:24:95:28 | begin | -| test.cpp:95:20:95:22 | arr indirection [begin] | test.cpp:95:24:95:28 | begin indirection | -| test.cpp:95:24:95:28 | begin | test.cpp:95:47:95:47 | p | -| test.cpp:95:24:95:28 | begin indirection | test.cpp:95:47:95:47 | p | -| test.cpp:95:36:95:38 | arr indirection [end] | test.cpp:95:40:95:42 | end | +| test.cpp:91:36:91:38 | arr indirection [end] | test.cpp:96:9:96:14 | ... = ... | +| test.cpp:91:40:91:42 | end indirection | test.cpp:96:9:96:14 | ... = ... | | test.cpp:95:36:95:38 | arr indirection [end] | test.cpp:95:40:95:42 | end indirection | -| test.cpp:95:40:95:42 | end | test.cpp:96:9:96:14 | Store: ... = ... | -| test.cpp:95:40:95:42 | end indirection | test.cpp:95:40:95:42 | end | -| test.cpp:99:20:99:22 | arr indirection [begin] | test.cpp:99:24:99:28 | begin | -| test.cpp:99:20:99:22 | arr indirection [begin] | test.cpp:99:24:99:28 | begin indirection | -| test.cpp:99:24:99:28 | begin | test.cpp:99:46:99:46 | p | -| test.cpp:99:24:99:28 | begin indirection | test.cpp:99:46:99:46 | p | -| test.cpp:99:35:99:37 | arr indirection [end] | test.cpp:99:39:99:41 | end | -| test.cpp:99:35:99:37 | arr indirection [end] | test.cpp:99:39:99:41 | end indirection | -| test.cpp:99:39:99:41 | end | test.cpp:96:9:96:14 | Store: ... = ... | -| test.cpp:99:39:99:41 | end indirection | test.cpp:99:39:99:41 | end | -| test.cpp:104:27:104:29 | arr [begin] | test.cpp:105:20:105:22 | arr indirection [begin] | -| test.cpp:104:27:104:29 | arr [begin] | test.cpp:109:20:109:22 | arr indirection [begin] | -| test.cpp:104:27:104:29 | arr [begin] | test.cpp:113:20:113:22 | arr indirection [begin] | +| test.cpp:95:36:95:38 | arr indirection [end] | test.cpp:96:9:96:14 | ... = ... | +| test.cpp:95:40:95:42 | end indirection | test.cpp:96:9:96:14 | ... = ... | | test.cpp:104:27:104:29 | arr [end] | test.cpp:105:36:105:38 | arr indirection [end] | | test.cpp:104:27:104:29 | arr [end] | test.cpp:109:36:109:38 | arr indirection [end] | -| test.cpp:104:27:104:29 | arr [end] | test.cpp:113:35:113:37 | arr indirection [end] | -| test.cpp:105:20:105:22 | arr indirection [begin] | test.cpp:105:24:105:28 | begin | -| test.cpp:105:20:105:22 | arr indirection [begin] | test.cpp:105:24:105:28 | begin indirection | -| test.cpp:105:24:105:28 | begin | test.cpp:105:47:105:47 | p | -| test.cpp:105:24:105:28 | begin indirection | test.cpp:105:47:105:47 | p | -| test.cpp:105:36:105:38 | arr indirection [end] | test.cpp:105:40:105:42 | end | | test.cpp:105:36:105:38 | arr indirection [end] | test.cpp:105:40:105:42 | end indirection | -| test.cpp:105:40:105:42 | end | test.cpp:110:9:110:14 | Store: ... = ... | -| test.cpp:105:40:105:42 | end indirection | test.cpp:105:40:105:42 | end | -| test.cpp:109:20:109:22 | arr indirection [begin] | test.cpp:109:24:109:28 | begin | -| test.cpp:109:20:109:22 | arr indirection [begin] | test.cpp:109:24:109:28 | begin indirection | -| test.cpp:109:24:109:28 | begin | test.cpp:109:47:109:47 | p | -| test.cpp:109:24:109:28 | begin indirection | test.cpp:109:47:109:47 | p | -| test.cpp:109:36:109:38 | arr indirection [end] | test.cpp:109:40:109:42 | end | +| test.cpp:105:36:105:38 | arr indirection [end] | test.cpp:110:9:110:14 | ... = ... | +| test.cpp:105:40:105:42 | end indirection | test.cpp:110:9:110:14 | ... = ... | | test.cpp:109:36:109:38 | arr indirection [end] | test.cpp:109:40:109:42 | end indirection | -| test.cpp:109:40:109:42 | end | test.cpp:110:9:110:14 | Store: ... = ... | -| test.cpp:109:40:109:42 | end indirection | test.cpp:109:40:109:42 | end | -| test.cpp:113:20:113:22 | arr indirection [begin] | test.cpp:113:24:113:28 | begin | -| test.cpp:113:20:113:22 | arr indirection [begin] | test.cpp:113:24:113:28 | begin indirection | -| test.cpp:113:24:113:28 | begin | test.cpp:113:46:113:46 | p | -| test.cpp:113:24:113:28 | begin indirection | test.cpp:113:46:113:46 | p | -| test.cpp:113:35:113:37 | arr indirection [end] | test.cpp:113:39:113:41 | end | -| test.cpp:113:35:113:37 | arr indirection [end] | test.cpp:113:39:113:41 | end indirection | -| test.cpp:113:39:113:41 | end | test.cpp:110:9:110:14 | Store: ... = ... | -| test.cpp:113:39:113:41 | end indirection | test.cpp:113:39:113:41 | end | -| test.cpp:119:18:119:25 | call to mk_array [begin] | test.cpp:104:27:104:29 | arr [begin] | +| test.cpp:109:36:109:38 | arr indirection [end] | test.cpp:110:9:110:14 | ... = ... | +| test.cpp:109:40:109:42 | end indirection | test.cpp:110:9:110:14 | ... = ... | | test.cpp:119:18:119:25 | call to mk_array [end] | test.cpp:104:27:104:29 | arr [end] | -| test.cpp:124:15:124:20 | call to malloc | test.cpp:125:5:125:17 | ... = ... | -| test.cpp:124:15:124:20 | call to malloc | test.cpp:126:15:126:15 | p | -| test.cpp:125:5:125:17 | ... = ... | test.cpp:125:9:125:13 | arr indirection [post update] [begin] | -| test.cpp:125:9:125:13 | arr indirection [post update] [begin] | test.cpp:126:5:126:7 | arr indirection [begin] | -| test.cpp:126:5:126:7 | arr indirection [begin] | test.cpp:129:11:129:13 | arr indirection [begin] | -| test.cpp:126:5:126:7 | arr indirection [begin] | test.cpp:133:11:133:13 | arr indirection [begin] | -| test.cpp:126:5:126:7 | arr indirection [begin] | test.cpp:137:11:137:13 | arr indirection [begin] | -| test.cpp:129:11:129:13 | arr indirection [begin] | test.cpp:129:15:129:19 | begin indirection | -| test.cpp:129:15:129:19 | begin indirection | test.cpp:129:15:129:19 | begin | -| test.cpp:133:11:133:13 | arr indirection [begin] | test.cpp:133:15:133:19 | begin indirection | -| test.cpp:133:15:133:19 | begin indirection | test.cpp:133:15:133:19 | begin | -| test.cpp:137:11:137:13 | arr indirection [begin] | test.cpp:137:15:137:19 | begin indirection | -| test.cpp:137:15:137:19 | begin indirection | test.cpp:137:15:137:19 | begin | -| test.cpp:141:10:141:19 | mk_array_p indirection [begin] | test.cpp:150:20:150:29 | call to mk_array_p indirection [begin] | -| test.cpp:141:10:141:19 | mk_array_p indirection [begin] | test.cpp:180:19:180:28 | call to mk_array_p indirection [begin] | | test.cpp:141:10:141:19 | mk_array_p indirection [end] | test.cpp:150:20:150:29 | call to mk_array_p indirection [end] | | test.cpp:141:10:141:19 | mk_array_p indirection [end] | test.cpp:180:19:180:28 | call to mk_array_p indirection [end] | | test.cpp:143:5:143:29 | ... = ... | test.cpp:143:10:143:14 | arr indirection [post update] [begin] | -| test.cpp:143:10:143:14 | arr indirection [post update] [begin] | test.cpp:144:5:144:7 | arr indirection [begin] | | test.cpp:143:10:143:14 | arr indirection [post update] [begin] | test.cpp:144:16:144:18 | arr indirection [begin] | | test.cpp:143:18:143:23 | call to malloc | test.cpp:143:5:143:29 | ... = ... | -| test.cpp:144:5:144:7 | arr indirection [begin] | test.cpp:141:10:141:19 | mk_array_p indirection [begin] | | test.cpp:144:5:144:32 | ... = ... | test.cpp:144:10:144:12 | arr indirection [post update] [end] | | test.cpp:144:10:144:12 | arr indirection [post update] [end] | test.cpp:141:10:141:19 | mk_array_p indirection [end] | | test.cpp:144:16:144:18 | arr indirection [begin] | test.cpp:144:21:144:25 | begin indirection | | test.cpp:144:16:144:32 | ... + ... | test.cpp:144:5:144:32 | ... = ... | -| test.cpp:144:21:144:25 | begin | test.cpp:144:5:144:32 | ... = ... | -| test.cpp:144:21:144:25 | begin | test.cpp:144:16:144:32 | ... + ... | -| test.cpp:144:21:144:25 | begin indirection | test.cpp:144:21:144:25 | begin | -| test.cpp:150:20:150:29 | call to mk_array_p indirection [begin] | test.cpp:152:20:152:22 | arr indirection [begin] | -| test.cpp:150:20:150:29 | call to mk_array_p indirection [begin] | test.cpp:156:20:156:22 | arr indirection [begin] | -| test.cpp:150:20:150:29 | call to mk_array_p indirection [begin] | test.cpp:160:20:160:22 | arr indirection [begin] | +| test.cpp:144:21:144:25 | begin indirection | test.cpp:144:5:144:32 | ... = ... | +| test.cpp:144:21:144:25 | begin indirection | test.cpp:144:16:144:32 | ... + ... | | test.cpp:150:20:150:29 | call to mk_array_p indirection [end] | test.cpp:156:37:156:39 | arr indirection [end] | -| test.cpp:152:20:152:22 | arr indirection [begin] | test.cpp:152:25:152:29 | begin | -| test.cpp:152:20:152:22 | arr indirection [begin] | test.cpp:152:25:152:29 | begin indirection | -| test.cpp:152:25:152:29 | begin | test.cpp:152:49:152:49 | p | -| test.cpp:152:25:152:29 | begin indirection | test.cpp:152:49:152:49 | p | -| test.cpp:156:20:156:22 | arr indirection [begin] | test.cpp:156:25:156:29 | begin | -| test.cpp:156:20:156:22 | arr indirection [begin] | test.cpp:156:25:156:29 | begin indirection | -| test.cpp:156:25:156:29 | begin | test.cpp:156:49:156:49 | p | -| test.cpp:156:25:156:29 | begin indirection | test.cpp:156:49:156:49 | p | -| test.cpp:156:37:156:39 | arr indirection [end] | test.cpp:156:42:156:44 | end | | test.cpp:156:37:156:39 | arr indirection [end] | test.cpp:156:42:156:44 | end indirection | -| test.cpp:156:42:156:44 | end | test.cpp:157:9:157:14 | Store: ... = ... | -| test.cpp:156:42:156:44 | end indirection | test.cpp:156:42:156:44 | end | -| test.cpp:160:20:160:22 | arr indirection [begin] | test.cpp:160:25:160:29 | begin | -| test.cpp:160:20:160:22 | arr indirection [begin] | test.cpp:160:25:160:29 | begin indirection | -| test.cpp:160:25:160:29 | begin | test.cpp:160:48:160:48 | p | -| test.cpp:160:25:160:29 | begin indirection | test.cpp:160:48:160:48 | p | -| test.cpp:165:29:165:31 | arr indirection [begin] | test.cpp:166:20:166:22 | arr indirection [begin] | -| test.cpp:165:29:165:31 | arr indirection [begin] | test.cpp:170:20:170:22 | arr indirection [begin] | -| test.cpp:165:29:165:31 | arr indirection [begin] | test.cpp:174:20:174:22 | arr indirection [begin] | +| test.cpp:156:37:156:39 | arr indirection [end] | test.cpp:157:9:157:14 | ... = ... | +| test.cpp:156:42:156:44 | end indirection | test.cpp:157:9:157:14 | ... = ... | | test.cpp:165:29:165:31 | arr indirection [end] | test.cpp:166:37:166:39 | arr indirection [end] | | test.cpp:165:29:165:31 | arr indirection [end] | test.cpp:170:37:170:39 | arr indirection [end] | -| test.cpp:165:29:165:31 | arr indirection [end] | test.cpp:174:36:174:38 | arr indirection [end] | -| test.cpp:166:20:166:22 | arr indirection [begin] | test.cpp:166:25:166:29 | begin | -| test.cpp:166:20:166:22 | arr indirection [begin] | test.cpp:166:25:166:29 | begin indirection | -| test.cpp:166:25:166:29 | begin | test.cpp:166:49:166:49 | p | -| test.cpp:166:25:166:29 | begin indirection | test.cpp:166:49:166:49 | p | -| test.cpp:166:37:166:39 | arr indirection [end] | test.cpp:166:42:166:44 | end | | test.cpp:166:37:166:39 | arr indirection [end] | test.cpp:166:42:166:44 | end indirection | -| test.cpp:166:42:166:44 | end | test.cpp:171:9:171:14 | Store: ... = ... | -| test.cpp:166:42:166:44 | end indirection | test.cpp:166:42:166:44 | end | -| test.cpp:170:20:170:22 | arr indirection [begin] | test.cpp:170:25:170:29 | begin | -| test.cpp:170:20:170:22 | arr indirection [begin] | test.cpp:170:25:170:29 | begin indirection | -| test.cpp:170:25:170:29 | begin | test.cpp:170:49:170:49 | p | -| test.cpp:170:25:170:29 | begin indirection | test.cpp:170:49:170:49 | p | -| test.cpp:170:37:170:39 | arr indirection [end] | test.cpp:170:42:170:44 | end | +| test.cpp:166:37:166:39 | arr indirection [end] | test.cpp:171:9:171:14 | ... = ... | +| test.cpp:166:42:166:44 | end indirection | test.cpp:171:9:171:14 | ... = ... | | test.cpp:170:37:170:39 | arr indirection [end] | test.cpp:170:42:170:44 | end indirection | -| test.cpp:170:42:170:44 | end | test.cpp:171:9:171:14 | Store: ... = ... | -| test.cpp:170:42:170:44 | end indirection | test.cpp:170:42:170:44 | end | -| test.cpp:174:20:174:22 | arr indirection [begin] | test.cpp:174:25:174:29 | begin | -| test.cpp:174:20:174:22 | arr indirection [begin] | test.cpp:174:25:174:29 | begin indirection | -| test.cpp:174:25:174:29 | begin | test.cpp:174:48:174:48 | p | -| test.cpp:174:25:174:29 | begin indirection | test.cpp:174:48:174:48 | p | -| test.cpp:174:36:174:38 | arr indirection [end] | test.cpp:174:41:174:43 | end | -| test.cpp:174:36:174:38 | arr indirection [end] | test.cpp:174:41:174:43 | end indirection | -| test.cpp:174:41:174:43 | end | test.cpp:171:9:171:14 | Store: ... = ... | -| test.cpp:174:41:174:43 | end indirection | test.cpp:174:41:174:43 | end | -| test.cpp:180:19:180:28 | call to mk_array_p indirection [begin] | test.cpp:165:29:165:31 | arr indirection [begin] | +| test.cpp:170:37:170:39 | arr indirection [end] | test.cpp:171:9:171:14 | ... = ... | +| test.cpp:170:42:170:44 | end indirection | test.cpp:171:9:171:14 | ... = ... | | test.cpp:180:19:180:28 | call to mk_array_p indirection [end] | test.cpp:165:29:165:31 | arr indirection [end] | -| test.cpp:188:15:188:20 | call to malloc | test.cpp:189:15:189:15 | p | -| test.cpp:194:23:194:28 | call to malloc | test.cpp:195:17:195:17 | p | -| test.cpp:194:23:194:28 | call to malloc | test.cpp:197:8:197:8 | p | -| test.cpp:194:23:194:28 | call to malloc | test.cpp:201:5:201:5 | p | -| test.cpp:195:17:195:17 | p | test.cpp:195:17:195:23 | ... + ... | -| test.cpp:195:17:195:17 | p | test.cpp:195:17:195:23 | ... + ... | -| test.cpp:195:17:195:17 | p | test.cpp:195:17:195:23 | ... + ... | -| test.cpp:195:17:195:17 | p | test.cpp:195:17:195:23 | ... + ... | -| test.cpp:195:17:195:17 | p | test.cpp:197:20:197:22 | end | -| test.cpp:195:17:195:17 | p | test.cpp:201:5:201:12 | access to array | -| test.cpp:195:17:195:23 | ... + ... | test.cpp:195:17:195:23 | ... + ... | -| test.cpp:195:17:195:23 | ... + ... | test.cpp:195:17:195:23 | ... + ... | -| test.cpp:195:17:195:23 | ... + ... | test.cpp:197:20:197:22 | end | -| test.cpp:195:17:195:23 | ... + ... | test.cpp:197:20:197:22 | end | -| test.cpp:195:17:195:23 | ... + ... | test.cpp:201:5:201:19 | Store: ... = ... | -| test.cpp:195:17:195:23 | ... + ... | test.cpp:201:5:201:19 | Store: ... = ... | -| test.cpp:195:17:195:23 | ... + ... | test.cpp:201:5:201:19 | Store: ... = ... | -| test.cpp:195:17:195:23 | ... + ... | test.cpp:201:5:201:19 | Store: ... = ... | -| test.cpp:197:20:197:22 | end | test.cpp:201:5:201:19 | Store: ... = ... | -| test.cpp:201:5:201:12 | access to array | test.cpp:201:5:201:19 | Store: ... = ... | -| test.cpp:205:23:205:28 | call to malloc | test.cpp:206:17:206:17 | p | -| test.cpp:205:23:205:28 | call to malloc | test.cpp:208:15:208:15 | p | -| test.cpp:206:17:206:17 | p | test.cpp:206:17:206:23 | ... + ... | -| test.cpp:206:17:206:17 | p | test.cpp:206:17:206:23 | ... + ... | -| test.cpp:206:17:206:17 | p | test.cpp:206:17:206:23 | ... + ... | -| test.cpp:206:17:206:17 | p | test.cpp:206:17:206:23 | ... + ... | -| test.cpp:206:17:206:17 | p | test.cpp:209:12:209:14 | end | -| test.cpp:206:17:206:17 | p | test.cpp:213:5:213:6 | * ... | -| test.cpp:206:17:206:17 | p | test.cpp:213:6:213:6 | q | -| test.cpp:206:17:206:17 | p | test.cpp:213:6:213:6 | q | -| test.cpp:206:17:206:23 | ... + ... | test.cpp:206:17:206:23 | ... + ... | -| test.cpp:206:17:206:23 | ... + ... | test.cpp:206:17:206:23 | ... + ... | -| test.cpp:206:17:206:23 | ... + ... | test.cpp:209:12:209:14 | end | -| test.cpp:206:17:206:23 | ... + ... | test.cpp:209:12:209:14 | end | -| test.cpp:206:17:206:23 | ... + ... | test.cpp:213:5:213:13 | Store: ... = ... | -| test.cpp:206:17:206:23 | ... + ... | test.cpp:213:5:213:13 | Store: ... = ... | -| test.cpp:206:17:206:23 | ... + ... | test.cpp:213:5:213:13 | Store: ... = ... | -| test.cpp:206:17:206:23 | ... + ... | test.cpp:213:5:213:13 | Store: ... = ... | -| test.cpp:209:12:209:14 | end | test.cpp:213:5:213:13 | Store: ... = ... | -| test.cpp:213:5:213:6 | * ... | test.cpp:213:5:213:13 | Store: ... = ... | -| test.cpp:213:6:213:6 | q | test.cpp:213:5:213:6 | * ... | -| test.cpp:213:6:213:6 | q | test.cpp:213:5:213:13 | Store: ... = ... | -| test.cpp:213:6:213:6 | q | test.cpp:213:5:213:13 | Store: ... = ... | -| test.cpp:221:17:221:22 | call to malloc | test.cpp:222:5:222:5 | p | -| test.cpp:231:18:231:30 | new[] | test.cpp:232:3:232:9 | newname | -| test.cpp:232:3:232:9 | newname | test.cpp:232:3:232:16 | access to array | -| test.cpp:232:3:232:16 | access to array | test.cpp:232:3:232:20 | Store: ... = ... | -| test.cpp:238:20:238:32 | new[] | test.cpp:239:5:239:11 | newname | -| test.cpp:239:5:239:11 | newname | test.cpp:239:5:239:18 | access to array | -| test.cpp:239:5:239:18 | access to array | test.cpp:239:5:239:22 | Store: ... = ... | -| test.cpp:248:24:248:30 | call to realloc | test.cpp:249:9:249:9 | p | -| test.cpp:248:24:248:30 | call to realloc | test.cpp:250:22:250:22 | p | -| test.cpp:248:24:248:30 | call to realloc | test.cpp:254:9:254:9 | p | -| test.cpp:254:9:254:9 | p | test.cpp:254:9:254:12 | access to array | -| test.cpp:254:9:254:12 | access to array | test.cpp:254:9:254:16 | Store: ... = ... | -| test.cpp:260:13:260:24 | new[] | test.cpp:261:14:261:15 | xs | -| test.cpp:261:14:261:15 | xs | test.cpp:261:14:261:21 | ... + ... | -| test.cpp:261:14:261:15 | xs | test.cpp:261:14:261:21 | ... + ... | -| test.cpp:261:14:261:15 | xs | test.cpp:261:14:261:21 | ... + ... | -| test.cpp:261:14:261:15 | xs | test.cpp:261:14:261:21 | ... + ... | -| test.cpp:261:14:261:15 | xs | test.cpp:262:26:262:28 | end | -| test.cpp:261:14:261:15 | xs | test.cpp:262:26:262:28 | end | -| test.cpp:261:14:261:15 | xs | test.cpp:262:31:262:31 | x | -| test.cpp:261:14:261:15 | xs | test.cpp:264:14:264:14 | x | -| test.cpp:261:14:261:15 | xs | test.cpp:264:14:264:14 | x | -| test.cpp:261:14:261:21 | ... + ... | test.cpp:261:14:261:21 | ... + ... | -| test.cpp:261:14:261:21 | ... + ... | test.cpp:261:14:261:21 | ... + ... | -| test.cpp:261:14:261:21 | ... + ... | test.cpp:262:26:262:28 | end | -| test.cpp:261:14:261:21 | ... + ... | test.cpp:262:26:262:28 | end | -| test.cpp:261:14:261:21 | ... + ... | test.cpp:262:26:262:28 | end | -| test.cpp:261:14:261:21 | ... + ... | test.cpp:262:26:262:28 | end | -| test.cpp:261:14:261:21 | ... + ... | test.cpp:264:13:264:14 | Load: * ... | -| test.cpp:261:14:261:21 | ... + ... | test.cpp:264:13:264:14 | Load: * ... | -| test.cpp:261:14:261:21 | ... + ... | test.cpp:264:13:264:14 | Load: * ... | -| test.cpp:261:14:261:21 | ... + ... | test.cpp:264:13:264:14 | Load: * ... | -| test.cpp:262:26:262:28 | end | test.cpp:262:26:262:28 | end | -| test.cpp:262:26:262:28 | end | test.cpp:262:26:262:28 | end | -| test.cpp:262:26:262:28 | end | test.cpp:264:13:264:14 | Load: * ... | -| test.cpp:262:26:262:28 | end | test.cpp:264:13:264:14 | Load: * ... | -| test.cpp:262:31:262:31 | x | test.cpp:264:13:264:14 | Load: * ... | -| test.cpp:264:14:264:14 | x | test.cpp:262:31:262:31 | x | -| test.cpp:264:14:264:14 | x | test.cpp:264:13:264:14 | Load: * ... | -| test.cpp:264:14:264:14 | x | test.cpp:264:13:264:14 | Load: * ... | -| test.cpp:270:13:270:24 | new[] | test.cpp:271:14:271:15 | xs | -| test.cpp:270:13:270:24 | new[] | test.cpp:272:31:272:31 | x | -| test.cpp:271:14:271:15 | xs | test.cpp:271:14:271:21 | ... + ... | -| test.cpp:271:14:271:15 | xs | test.cpp:271:14:271:21 | ... + ... | -| test.cpp:271:14:271:15 | xs | test.cpp:271:14:271:21 | ... + ... | -| test.cpp:271:14:271:15 | xs | test.cpp:271:14:271:21 | ... + ... | -| test.cpp:271:14:271:15 | xs | test.cpp:272:26:272:28 | end | -| test.cpp:271:14:271:15 | xs | test.cpp:272:26:272:28 | end | -| test.cpp:271:14:271:15 | xs | test.cpp:272:31:272:31 | x | -| test.cpp:271:14:271:15 | xs | test.cpp:274:5:274:6 | * ... | -| test.cpp:271:14:271:15 | xs | test.cpp:274:6:274:6 | x | -| test.cpp:271:14:271:15 | xs | test.cpp:274:6:274:6 | x | -| test.cpp:271:14:271:21 | ... + ... | test.cpp:271:14:271:21 | ... + ... | -| test.cpp:271:14:271:21 | ... + ... | test.cpp:271:14:271:21 | ... + ... | -| test.cpp:271:14:271:21 | ... + ... | test.cpp:272:26:272:28 | end | -| test.cpp:271:14:271:21 | ... + ... | test.cpp:272:26:272:28 | end | -| test.cpp:271:14:271:21 | ... + ... | test.cpp:272:26:272:28 | end | -| test.cpp:271:14:271:21 | ... + ... | test.cpp:272:26:272:28 | end | -| test.cpp:271:14:271:21 | ... + ... | test.cpp:274:5:274:10 | Store: ... = ... | -| test.cpp:271:14:271:21 | ... + ... | test.cpp:274:5:274:10 | Store: ... = ... | -| test.cpp:271:14:271:21 | ... + ... | test.cpp:274:5:274:10 | Store: ... = ... | -| test.cpp:271:14:271:21 | ... + ... | test.cpp:274:5:274:10 | Store: ... = ... | -| test.cpp:272:26:272:28 | end | test.cpp:272:26:272:28 | end | -| test.cpp:272:26:272:28 | end | test.cpp:272:26:272:28 | end | -| test.cpp:272:26:272:28 | end | test.cpp:274:5:274:10 | Store: ... = ... | -| test.cpp:272:26:272:28 | end | test.cpp:274:5:274:10 | Store: ... = ... | -| test.cpp:272:31:272:31 | x | test.cpp:274:5:274:10 | Store: ... = ... | -| test.cpp:274:5:274:6 | * ... | test.cpp:274:5:274:10 | Store: ... = ... | -| test.cpp:274:6:274:6 | x | test.cpp:272:31:272:31 | x | -| test.cpp:274:6:274:6 | x | test.cpp:274:5:274:6 | * ... | -| test.cpp:274:6:274:6 | x | test.cpp:274:5:274:10 | Store: ... = ... | -| test.cpp:274:6:274:6 | x | test.cpp:274:5:274:10 | Store: ... = ... | -| test.cpp:280:13:280:24 | new[] | test.cpp:281:14:281:15 | xs | -| test.cpp:290:13:290:24 | new[] | test.cpp:291:14:291:15 | xs | -| test.cpp:290:13:290:24 | new[] | test.cpp:292:30:292:30 | x | -| test.cpp:304:15:304:26 | new[] | test.cpp:307:5:307:6 | xs | -| test.cpp:304:15:304:26 | new[] | test.cpp:308:5:308:6 | xs | -| test.cpp:308:5:308:6 | xs | test.cpp:308:5:308:11 | access to array | -| test.cpp:308:5:308:11 | access to array | test.cpp:308:5:308:29 | Store: ... = ... | -| test.cpp:313:14:313:27 | new[] | test.cpp:314:15:314:16 | xs | -| test.cpp:325:14:325:27 | new[] | test.cpp:326:15:326:16 | xs | -| test.cpp:326:15:326:16 | xs | test.cpp:326:15:326:23 | ... + ... | -| test.cpp:326:15:326:16 | xs | test.cpp:326:15:326:23 | ... + ... | -| test.cpp:326:15:326:16 | xs | test.cpp:338:8:338:15 | * ... | -| test.cpp:326:15:326:16 | xs | test.cpp:341:8:341:17 | * ... | -| test.cpp:326:15:326:23 | ... + ... | test.cpp:342:8:342:17 | * ... | -| test.cpp:326:15:326:23 | ... + ... | test.cpp:342:8:342:17 | * ... | -| test.cpp:338:8:338:15 | * ... | test.cpp:342:8:342:17 | * ... | -| test.cpp:341:8:341:17 | * ... | test.cpp:342:8:342:17 | * ... | -| test.cpp:347:14:347:27 | new[] | test.cpp:348:15:348:16 | xs | -| test.cpp:355:14:355:27 | new[] | test.cpp:356:15:356:16 | xs | -| test.cpp:356:15:356:16 | xs | test.cpp:356:15:356:23 | ... + ... | -| test.cpp:356:15:356:16 | xs | test.cpp:356:15:356:23 | ... + ... | -| test.cpp:356:15:356:16 | xs | test.cpp:356:15:356:23 | ... + ... | -| test.cpp:356:15:356:16 | xs | test.cpp:356:15:356:23 | ... + ... | -| test.cpp:356:15:356:16 | xs | test.cpp:357:24:357:26 | end | -| test.cpp:356:15:356:16 | xs | test.cpp:357:24:357:30 | ... + ... | -| test.cpp:356:15:356:16 | xs | test.cpp:357:24:357:30 | ... + ... | -| test.cpp:356:15:356:16 | xs | test.cpp:357:24:357:30 | ... + ... | -| test.cpp:356:15:356:16 | xs | test.cpp:357:24:357:30 | ... + ... | -| test.cpp:356:15:356:16 | xs | test.cpp:358:15:358:26 | end_plus_one | -| test.cpp:356:15:356:16 | xs | test.cpp:358:15:358:26 | end_plus_one | -| test.cpp:356:15:356:16 | xs | test.cpp:359:16:359:27 | end_plus_one | -| test.cpp:356:15:356:16 | xs | test.cpp:359:16:359:31 | ... + ... | -| test.cpp:356:15:356:23 | ... + ... | test.cpp:356:15:356:23 | ... + ... | -| test.cpp:356:15:356:23 | ... + ... | test.cpp:356:15:356:23 | ... + ... | -| test.cpp:356:15:356:23 | ... + ... | test.cpp:357:24:357:26 | end | -| test.cpp:356:15:356:23 | ... + ... | test.cpp:357:24:357:26 | end | -| test.cpp:356:15:356:23 | ... + ... | test.cpp:358:14:358:26 | Load: * ... | -| test.cpp:356:15:356:23 | ... + ... | test.cpp:358:14:358:26 | Load: * ... | -| test.cpp:356:15:356:23 | ... + ... | test.cpp:358:14:358:26 | Load: * ... | -| test.cpp:356:15:356:23 | ... + ... | test.cpp:358:14:358:26 | Load: * ... | -| test.cpp:356:15:356:23 | ... + ... | test.cpp:359:14:359:32 | Load: * ... | -| test.cpp:356:15:356:23 | ... + ... | test.cpp:359:14:359:32 | Load: * ... | -| test.cpp:356:15:356:23 | ... + ... | test.cpp:359:14:359:32 | Load: * ... | -| test.cpp:356:15:356:23 | ... + ... | test.cpp:359:14:359:32 | Load: * ... | -| test.cpp:357:24:357:26 | end | test.cpp:358:14:358:26 | Load: * ... | -| test.cpp:357:24:357:26 | end | test.cpp:359:14:359:32 | Load: * ... | -| test.cpp:357:24:357:30 | ... + ... | test.cpp:357:24:357:30 | ... + ... | -| test.cpp:357:24:357:30 | ... + ... | test.cpp:357:24:357:30 | ... + ... | -| test.cpp:357:24:357:30 | ... + ... | test.cpp:358:14:358:26 | Load: * ... | -| test.cpp:357:24:357:30 | ... + ... | test.cpp:358:14:358:26 | Load: * ... | -| test.cpp:357:24:357:30 | ... + ... | test.cpp:358:14:358:26 | Load: * ... | -| test.cpp:357:24:357:30 | ... + ... | test.cpp:358:14:358:26 | Load: * ... | -| test.cpp:357:24:357:30 | ... + ... | test.cpp:358:15:358:26 | end_plus_one | -| test.cpp:357:24:357:30 | ... + ... | test.cpp:358:15:358:26 | end_plus_one | -| test.cpp:357:24:357:30 | ... + ... | test.cpp:358:15:358:26 | end_plus_one | -| test.cpp:357:24:357:30 | ... + ... | test.cpp:358:15:358:26 | end_plus_one | -| test.cpp:357:24:357:30 | ... + ... | test.cpp:359:14:359:32 | Load: * ... | -| test.cpp:357:24:357:30 | ... + ... | test.cpp:359:14:359:32 | Load: * ... | -| test.cpp:357:24:357:30 | ... + ... | test.cpp:359:14:359:32 | Load: * ... | -| test.cpp:357:24:357:30 | ... + ... | test.cpp:359:14:359:32 | Load: * ... | -| test.cpp:357:24:357:30 | ... + ... | test.cpp:359:16:359:27 | end_plus_one | -| test.cpp:357:24:357:30 | ... + ... | test.cpp:359:16:359:27 | end_plus_one | -| test.cpp:358:15:358:26 | end_plus_one | test.cpp:358:14:358:26 | Load: * ... | -| test.cpp:358:15:358:26 | end_plus_one | test.cpp:358:14:358:26 | Load: * ... | -| test.cpp:358:15:358:26 | end_plus_one | test.cpp:359:14:359:32 | Load: * ... | -| test.cpp:358:15:358:26 | end_plus_one | test.cpp:359:14:359:32 | Load: * ... | -| test.cpp:358:15:358:26 | end_plus_one | test.cpp:359:16:359:27 | end_plus_one | -| test.cpp:359:16:359:27 | end_plus_one | test.cpp:358:14:358:26 | Load: * ... | -| test.cpp:359:16:359:27 | end_plus_one | test.cpp:359:14:359:32 | Load: * ... | -| test.cpp:359:16:359:31 | ... + ... | test.cpp:359:14:359:32 | Load: * ... | -| test.cpp:363:14:363:27 | new[] | test.cpp:365:15:365:15 | p | -| test.cpp:377:14:377:27 | new[] | test.cpp:378:15:378:16 | xs | -| test.cpp:378:15:378:16 | xs | test.cpp:378:15:378:23 | ... + ... | -| test.cpp:378:15:378:16 | xs | test.cpp:378:15:378:23 | ... + ... | -| test.cpp:378:15:378:16 | xs | test.cpp:378:15:378:23 | ... + ... | -| test.cpp:378:15:378:16 | xs | test.cpp:378:15:378:23 | ... + ... | -| test.cpp:378:15:378:16 | xs | test.cpp:381:5:381:7 | end | -| test.cpp:378:15:378:16 | xs | test.cpp:381:5:381:9 | ... ++ | -| test.cpp:378:15:378:16 | xs | test.cpp:381:5:381:9 | ... ++ | -| test.cpp:378:15:378:16 | xs | test.cpp:384:14:384:16 | end | -| test.cpp:378:15:378:23 | ... + ... | test.cpp:378:15:378:23 | ... + ... | -| test.cpp:378:15:378:23 | ... + ... | test.cpp:378:15:378:23 | ... + ... | -| test.cpp:378:15:378:23 | ... + ... | test.cpp:381:5:381:7 | end | -| test.cpp:378:15:378:23 | ... + ... | test.cpp:381:5:381:7 | end | -| test.cpp:378:15:378:23 | ... + ... | test.cpp:384:13:384:16 | Load: * ... | -| test.cpp:378:15:378:23 | ... + ... | test.cpp:384:13:384:16 | Load: * ... | -| test.cpp:378:15:378:23 | ... + ... | test.cpp:384:13:384:16 | Load: * ... | -| test.cpp:378:15:378:23 | ... + ... | test.cpp:384:13:384:16 | Load: * ... | -| test.cpp:378:15:378:23 | ... + ... | test.cpp:384:14:384:16 | end | -| test.cpp:378:15:378:23 | ... + ... | test.cpp:384:14:384:16 | end | -| test.cpp:381:5:381:7 | end | test.cpp:384:13:384:16 | Load: * ... | -| test.cpp:381:5:381:9 | ... ++ | test.cpp:384:14:384:16 | end | -| test.cpp:381:5:381:9 | ... ++ | test.cpp:384:14:384:16 | end | -| test.cpp:384:14:384:16 | end | test.cpp:384:13:384:16 | Load: * ... | -| test.cpp:388:14:388:27 | new[] | test.cpp:389:16:389:17 | xs | -| test.cpp:388:14:388:27 | new[] | test.cpp:392:3:392:4 | xs | -| test.cpp:399:14:399:27 | new[] | test.cpp:400:16:400:17 | xs | -| test.cpp:399:14:399:27 | new[] | test.cpp:402:5:402:6 | xs | -| test.cpp:410:14:410:27 | new[] | test.cpp:411:16:411:17 | xs | -| test.cpp:410:14:410:27 | new[] | test.cpp:413:5:413:6 | xs | -| test.cpp:411:15:411:23 | & ... | test.cpp:411:15:411:23 | & ... | -| test.cpp:411:15:411:23 | & ... | test.cpp:411:15:411:23 | & ... | -| test.cpp:411:15:411:23 | & ... | test.cpp:412:12:412:14 | end | -| test.cpp:411:15:411:23 | & ... | test.cpp:412:12:412:14 | end | -| test.cpp:411:15:411:23 | & ... | test.cpp:412:12:412:14 | end | -| test.cpp:411:15:411:23 | & ... | test.cpp:412:12:412:14 | end | -| test.cpp:411:15:411:23 | & ... | test.cpp:414:14:414:16 | end | -| test.cpp:411:15:411:23 | & ... | test.cpp:414:14:414:16 | end | -| test.cpp:411:15:411:23 | & ... | test.cpp:415:7:415:15 | Store: ... = ... | -| test.cpp:411:15:411:23 | & ... | test.cpp:415:7:415:15 | Store: ... = ... | -| test.cpp:411:15:411:23 | & ... | test.cpp:415:7:415:15 | Store: ... = ... | -| test.cpp:411:15:411:23 | & ... | test.cpp:415:7:415:15 | Store: ... = ... | -| test.cpp:411:16:411:17 | xs | test.cpp:411:15:411:23 | & ... | -| test.cpp:411:16:411:17 | xs | test.cpp:411:15:411:23 | & ... | -| test.cpp:411:16:411:17 | xs | test.cpp:411:15:411:23 | & ... | -| test.cpp:411:16:411:17 | xs | test.cpp:411:15:411:23 | & ... | -| test.cpp:411:16:411:17 | xs | test.cpp:411:16:411:23 | access to array | -| test.cpp:411:16:411:17 | xs | test.cpp:411:16:411:23 | access to array | -| test.cpp:411:16:411:17 | xs | test.cpp:412:12:412:14 | end | -| test.cpp:411:16:411:17 | xs | test.cpp:412:12:412:14 | end | -| test.cpp:411:16:411:17 | xs | test.cpp:413:5:413:8 | ... ++ | -| test.cpp:411:16:411:17 | xs | test.cpp:413:5:413:8 | ... ++ | -| test.cpp:411:16:411:17 | xs | test.cpp:413:5:413:8 | ... ++ | -| test.cpp:411:16:411:17 | xs | test.cpp:413:5:413:8 | ... ++ | -| test.cpp:411:16:411:17 | xs | test.cpp:414:9:414:10 | xs | -| test.cpp:411:16:411:17 | xs | test.cpp:414:14:414:16 | end | -| test.cpp:411:16:411:17 | xs | test.cpp:415:7:415:11 | access to array | -| test.cpp:411:16:411:23 | access to array | test.cpp:411:15:411:23 | & ... | -| test.cpp:411:16:411:23 | access to array | test.cpp:411:15:411:23 | & ... | -| test.cpp:411:16:411:23 | access to array | test.cpp:411:15:411:23 | & ... | -| test.cpp:411:16:411:23 | access to array | test.cpp:411:15:411:23 | & ... | -| test.cpp:411:16:411:23 | access to array | test.cpp:412:12:412:14 | end | -| test.cpp:411:16:411:23 | access to array | test.cpp:412:12:412:14 | end | -| test.cpp:411:16:411:23 | access to array | test.cpp:414:14:414:16 | end | -| test.cpp:411:16:411:23 | access to array | test.cpp:415:7:415:15 | Store: ... = ... | -| test.cpp:411:16:411:23 | access to array | test.cpp:415:7:415:15 | Store: ... = ... | -| test.cpp:412:12:412:14 | end | test.cpp:414:14:414:16 | end | -| test.cpp:412:12:412:14 | end | test.cpp:415:7:415:15 | Store: ... = ... | -| test.cpp:412:12:412:14 | end | test.cpp:415:7:415:15 | Store: ... = ... | -| test.cpp:413:5:413:8 | ... ++ | test.cpp:413:5:413:8 | ... ++ | -| test.cpp:413:5:413:8 | ... ++ | test.cpp:413:5:413:8 | ... ++ | -| test.cpp:413:5:413:8 | ... ++ | test.cpp:414:9:414:10 | xs | -| test.cpp:413:5:413:8 | ... ++ | test.cpp:414:9:414:10 | xs | -| test.cpp:413:5:413:8 | ... ++ | test.cpp:415:7:415:15 | Store: ... = ... | -| test.cpp:413:5:413:8 | ... ++ | test.cpp:415:7:415:15 | Store: ... = ... | -| test.cpp:413:5:413:8 | ... ++ | test.cpp:415:7:415:15 | Store: ... = ... | -| test.cpp:413:5:413:8 | ... ++ | test.cpp:415:7:415:15 | Store: ... = ... | -| test.cpp:414:9:414:10 | xs | test.cpp:415:7:415:15 | Store: ... = ... | -| test.cpp:414:14:414:16 | end | test.cpp:415:7:415:15 | Store: ... = ... | -| test.cpp:415:7:415:11 | access to array | test.cpp:415:7:415:15 | Store: ... = ... | -| test.cpp:421:14:421:27 | new[] | test.cpp:422:16:422:17 | xs | -| test.cpp:421:14:421:27 | new[] | test.cpp:424:5:424:6 | xs | -| test.cpp:422:15:422:23 | & ... | test.cpp:422:15:422:23 | & ... | -| test.cpp:422:15:422:23 | & ... | test.cpp:422:15:422:23 | & ... | -| test.cpp:422:15:422:23 | & ... | test.cpp:423:12:423:14 | end | -| test.cpp:422:15:422:23 | & ... | test.cpp:423:12:423:14 | end | -| test.cpp:422:15:422:23 | & ... | test.cpp:423:12:423:14 | end | -| test.cpp:422:15:422:23 | & ... | test.cpp:423:12:423:14 | end | -| test.cpp:422:15:422:23 | & ... | test.cpp:425:18:425:20 | end | -| test.cpp:422:15:422:23 | & ... | test.cpp:425:18:425:20 | end | -| test.cpp:422:15:422:23 | & ... | test.cpp:426:7:426:15 | Store: ... = ... | -| test.cpp:422:15:422:23 | & ... | test.cpp:426:7:426:15 | Store: ... = ... | -| test.cpp:422:15:422:23 | & ... | test.cpp:426:7:426:15 | Store: ... = ... | -| test.cpp:422:15:422:23 | & ... | test.cpp:426:7:426:15 | Store: ... = ... | -| test.cpp:422:16:422:17 | xs | test.cpp:422:15:422:23 | & ... | -| test.cpp:422:16:422:17 | xs | test.cpp:422:15:422:23 | & ... | -| test.cpp:422:16:422:17 | xs | test.cpp:422:15:422:23 | & ... | -| test.cpp:422:16:422:17 | xs | test.cpp:422:15:422:23 | & ... | -| test.cpp:422:16:422:17 | xs | test.cpp:422:16:422:23 | access to array | -| test.cpp:422:16:422:17 | xs | test.cpp:422:16:422:23 | access to array | -| test.cpp:422:16:422:17 | xs | test.cpp:423:12:423:14 | end | -| test.cpp:422:16:422:17 | xs | test.cpp:423:12:423:14 | end | -| test.cpp:422:16:422:17 | xs | test.cpp:424:5:424:8 | ... ++ | -| test.cpp:422:16:422:17 | xs | test.cpp:424:5:424:8 | ... ++ | -| test.cpp:422:16:422:17 | xs | test.cpp:424:5:424:8 | ... ++ | -| test.cpp:422:16:422:17 | xs | test.cpp:424:5:424:8 | ... ++ | -| test.cpp:422:16:422:17 | xs | test.cpp:425:9:425:10 | xs | -| test.cpp:422:16:422:17 | xs | test.cpp:425:9:425:10 | xs | -| test.cpp:422:16:422:17 | xs | test.cpp:425:18:425:20 | end | -| test.cpp:422:16:422:17 | xs | test.cpp:426:7:426:8 | xs | -| test.cpp:422:16:422:17 | xs | test.cpp:426:7:426:11 | access to array | -| test.cpp:422:16:422:23 | access to array | test.cpp:422:15:422:23 | & ... | -| test.cpp:422:16:422:23 | access to array | test.cpp:422:15:422:23 | & ... | -| test.cpp:422:16:422:23 | access to array | test.cpp:422:15:422:23 | & ... | -| test.cpp:422:16:422:23 | access to array | test.cpp:422:15:422:23 | & ... | -| test.cpp:422:16:422:23 | access to array | test.cpp:423:12:423:14 | end | -| test.cpp:422:16:422:23 | access to array | test.cpp:423:12:423:14 | end | -| test.cpp:422:16:422:23 | access to array | test.cpp:425:18:425:20 | end | -| test.cpp:422:16:422:23 | access to array | test.cpp:426:7:426:15 | Store: ... = ... | -| test.cpp:422:16:422:23 | access to array | test.cpp:426:7:426:15 | Store: ... = ... | -| test.cpp:423:12:423:14 | end | test.cpp:425:18:425:20 | end | -| test.cpp:423:12:423:14 | end | test.cpp:426:7:426:15 | Store: ... = ... | -| test.cpp:423:12:423:14 | end | test.cpp:426:7:426:15 | Store: ... = ... | -| test.cpp:424:5:424:8 | ... ++ | test.cpp:424:5:424:8 | ... ++ | -| test.cpp:424:5:424:8 | ... ++ | test.cpp:424:5:424:8 | ... ++ | -| test.cpp:424:5:424:8 | ... ++ | test.cpp:425:9:425:10 | xs | -| test.cpp:424:5:424:8 | ... ++ | test.cpp:425:9:425:10 | xs | -| test.cpp:424:5:424:8 | ... ++ | test.cpp:425:9:425:10 | xs | -| test.cpp:424:5:424:8 | ... ++ | test.cpp:425:9:425:10 | xs | -| test.cpp:424:5:424:8 | ... ++ | test.cpp:426:7:426:8 | xs | -| test.cpp:424:5:424:8 | ... ++ | test.cpp:426:7:426:8 | xs | -| test.cpp:424:5:424:8 | ... ++ | test.cpp:426:7:426:15 | Store: ... = ... | -| test.cpp:424:5:424:8 | ... ++ | test.cpp:426:7:426:15 | Store: ... = ... | -| test.cpp:424:5:424:8 | ... ++ | test.cpp:426:7:426:15 | Store: ... = ... | -| test.cpp:424:5:424:8 | ... ++ | test.cpp:426:7:426:15 | Store: ... = ... | -| test.cpp:425:9:425:10 | xs | test.cpp:426:7:426:8 | xs | -| test.cpp:425:9:425:10 | xs | test.cpp:426:7:426:15 | Store: ... = ... | -| test.cpp:425:9:425:10 | xs | test.cpp:426:7:426:15 | Store: ... = ... | -| test.cpp:425:18:425:20 | end | test.cpp:426:7:426:15 | Store: ... = ... | -| test.cpp:426:7:426:8 | xs | test.cpp:426:7:426:15 | Store: ... = ... | -| test.cpp:426:7:426:11 | access to array | test.cpp:426:7:426:15 | Store: ... = ... | -| test.cpp:432:14:432:27 | new[] | test.cpp:433:16:433:17 | xs | -| test.cpp:432:14:432:27 | new[] | test.cpp:436:5:436:6 | xs | -| test.cpp:433:15:433:23 | & ... | test.cpp:433:15:433:23 | & ... | -| test.cpp:433:15:433:23 | & ... | test.cpp:433:15:433:23 | & ... | -| test.cpp:433:15:433:23 | & ... | test.cpp:434:12:434:14 | end | -| test.cpp:433:15:433:23 | & ... | test.cpp:434:12:434:14 | end | -| test.cpp:433:15:433:23 | & ... | test.cpp:434:12:434:14 | end | -| test.cpp:433:15:433:23 | & ... | test.cpp:434:12:434:14 | end | -| test.cpp:433:15:433:23 | & ... | test.cpp:435:5:435:7 | end | -| test.cpp:433:15:433:23 | & ... | test.cpp:435:5:435:7 | end | -| test.cpp:433:15:433:23 | & ... | test.cpp:438:7:438:15 | Store: ... = ... | -| test.cpp:433:15:433:23 | & ... | test.cpp:438:7:438:15 | Store: ... = ... | -| test.cpp:433:15:433:23 | & ... | test.cpp:438:7:438:15 | Store: ... = ... | -| test.cpp:433:15:433:23 | & ... | test.cpp:438:7:438:15 | Store: ... = ... | -| test.cpp:433:16:433:17 | xs | test.cpp:433:15:433:23 | & ... | -| test.cpp:433:16:433:17 | xs | test.cpp:433:15:433:23 | & ... | -| test.cpp:433:16:433:17 | xs | test.cpp:433:15:433:23 | & ... | -| test.cpp:433:16:433:17 | xs | test.cpp:433:15:433:23 | & ... | -| test.cpp:433:16:433:17 | xs | test.cpp:433:16:433:23 | access to array | -| test.cpp:433:16:433:17 | xs | test.cpp:433:16:433:23 | access to array | -| test.cpp:433:16:433:17 | xs | test.cpp:434:12:434:14 | end | -| test.cpp:433:16:433:17 | xs | test.cpp:434:12:434:14 | end | -| test.cpp:433:16:433:17 | xs | test.cpp:435:5:435:7 | end | -| test.cpp:433:16:433:17 | xs | test.cpp:436:5:436:8 | ... ++ | -| test.cpp:433:16:433:17 | xs | test.cpp:436:5:436:8 | ... ++ | -| test.cpp:433:16:433:17 | xs | test.cpp:436:5:436:8 | ... ++ | -| test.cpp:433:16:433:17 | xs | test.cpp:436:5:436:8 | ... ++ | -| test.cpp:433:16:433:17 | xs | test.cpp:437:9:437:10 | xs | -| test.cpp:433:16:433:17 | xs | test.cpp:438:7:438:11 | access to array | -| test.cpp:433:16:433:23 | access to array | test.cpp:433:15:433:23 | & ... | -| test.cpp:433:16:433:23 | access to array | test.cpp:433:15:433:23 | & ... | -| test.cpp:433:16:433:23 | access to array | test.cpp:433:15:433:23 | & ... | -| test.cpp:433:16:433:23 | access to array | test.cpp:433:15:433:23 | & ... | -| test.cpp:433:16:433:23 | access to array | test.cpp:434:12:434:14 | end | -| test.cpp:433:16:433:23 | access to array | test.cpp:434:12:434:14 | end | -| test.cpp:433:16:433:23 | access to array | test.cpp:435:5:435:7 | end | -| test.cpp:433:16:433:23 | access to array | test.cpp:438:7:438:15 | Store: ... = ... | -| test.cpp:433:16:433:23 | access to array | test.cpp:438:7:438:15 | Store: ... = ... | -| test.cpp:434:12:434:14 | end | test.cpp:435:5:435:7 | end | -| test.cpp:434:12:434:14 | end | test.cpp:438:7:438:15 | Store: ... = ... | -| test.cpp:434:12:434:14 | end | test.cpp:438:7:438:15 | Store: ... = ... | -| test.cpp:435:5:435:7 | end | test.cpp:438:7:438:15 | Store: ... = ... | -| test.cpp:436:5:436:8 | ... ++ | test.cpp:436:5:436:8 | ... ++ | -| test.cpp:436:5:436:8 | ... ++ | test.cpp:436:5:436:8 | ... ++ | -| test.cpp:436:5:436:8 | ... ++ | test.cpp:437:9:437:10 | xs | -| test.cpp:436:5:436:8 | ... ++ | test.cpp:437:9:437:10 | xs | -| test.cpp:436:5:436:8 | ... ++ | test.cpp:438:7:438:15 | Store: ... = ... | -| test.cpp:436:5:436:8 | ... ++ | test.cpp:438:7:438:15 | Store: ... = ... | -| test.cpp:436:5:436:8 | ... ++ | test.cpp:438:7:438:15 | Store: ... = ... | -| test.cpp:436:5:436:8 | ... ++ | test.cpp:438:7:438:15 | Store: ... = ... | -| test.cpp:437:9:437:10 | xs | test.cpp:438:7:438:15 | Store: ... = ... | -| test.cpp:438:7:438:11 | access to array | test.cpp:438:7:438:15 | Store: ... = ... | -| test.cpp:444:14:444:27 | new[] | test.cpp:445:16:445:17 | xs | -| test.cpp:444:14:444:27 | new[] | test.cpp:448:5:448:6 | xs | -| test.cpp:445:15:445:23 | & ... | test.cpp:445:15:445:23 | & ... | -| test.cpp:445:15:445:23 | & ... | test.cpp:445:15:445:23 | & ... | -| test.cpp:445:15:445:23 | & ... | test.cpp:446:3:446:5 | end | -| test.cpp:445:15:445:23 | & ... | test.cpp:446:3:446:5 | end | -| test.cpp:445:15:445:23 | & ... | test.cpp:450:7:450:15 | Store: ... = ... | -| test.cpp:445:15:445:23 | & ... | test.cpp:450:7:450:15 | Store: ... = ... | -| test.cpp:445:15:445:23 | & ... | test.cpp:450:7:450:15 | Store: ... = ... | -| test.cpp:445:15:445:23 | & ... | test.cpp:450:7:450:15 | Store: ... = ... | -| test.cpp:445:16:445:17 | xs | test.cpp:445:15:445:23 | & ... | -| test.cpp:445:16:445:17 | xs | test.cpp:445:15:445:23 | & ... | -| test.cpp:445:16:445:17 | xs | test.cpp:445:15:445:23 | & ... | -| test.cpp:445:16:445:17 | xs | test.cpp:445:15:445:23 | & ... | -| test.cpp:445:16:445:17 | xs | test.cpp:445:16:445:23 | access to array | -| test.cpp:445:16:445:17 | xs | test.cpp:445:16:445:23 | access to array | -| test.cpp:445:16:445:17 | xs | test.cpp:446:3:446:5 | end | -| test.cpp:445:16:445:17 | xs | test.cpp:448:5:448:8 | ... ++ | -| test.cpp:445:16:445:17 | xs | test.cpp:448:5:448:8 | ... ++ | -| test.cpp:445:16:445:17 | xs | test.cpp:448:5:448:8 | ... ++ | -| test.cpp:445:16:445:17 | xs | test.cpp:448:5:448:8 | ... ++ | -| test.cpp:445:16:445:17 | xs | test.cpp:449:9:449:10 | xs | -| test.cpp:445:16:445:17 | xs | test.cpp:450:7:450:11 | access to array | -| test.cpp:445:16:445:23 | access to array | test.cpp:445:15:445:23 | & ... | -| test.cpp:445:16:445:23 | access to array | test.cpp:445:15:445:23 | & ... | -| test.cpp:445:16:445:23 | access to array | test.cpp:445:15:445:23 | & ... | -| test.cpp:445:16:445:23 | access to array | test.cpp:445:15:445:23 | & ... | -| test.cpp:445:16:445:23 | access to array | test.cpp:446:3:446:5 | end | -| test.cpp:445:16:445:23 | access to array | test.cpp:450:7:450:15 | Store: ... = ... | -| test.cpp:445:16:445:23 | access to array | test.cpp:450:7:450:15 | Store: ... = ... | -| test.cpp:446:3:446:5 | end | test.cpp:450:7:450:15 | Store: ... = ... | -| test.cpp:448:5:448:8 | ... ++ | test.cpp:448:5:448:8 | ... ++ | -| test.cpp:448:5:448:8 | ... ++ | test.cpp:448:5:448:8 | ... ++ | -| test.cpp:448:5:448:8 | ... ++ | test.cpp:449:9:449:10 | xs | -| test.cpp:448:5:448:8 | ... ++ | test.cpp:449:9:449:10 | xs | -| test.cpp:448:5:448:8 | ... ++ | test.cpp:450:7:450:15 | Store: ... = ... | -| test.cpp:448:5:448:8 | ... ++ | test.cpp:450:7:450:15 | Store: ... = ... | -| test.cpp:448:5:448:8 | ... ++ | test.cpp:450:7:450:15 | Store: ... = ... | -| test.cpp:448:5:448:8 | ... ++ | test.cpp:450:7:450:15 | Store: ... = ... | -| test.cpp:449:9:449:10 | xs | test.cpp:450:7:450:15 | Store: ... = ... | -| test.cpp:450:7:450:11 | access to array | test.cpp:450:7:450:15 | Store: ... = ... | -| test.cpp:456:14:456:31 | new[] | test.cpp:457:16:457:17 | xs | -| test.cpp:456:14:456:31 | new[] | test.cpp:460:5:460:6 | xs | -| test.cpp:468:14:468:27 | new[] | test.cpp:469:16:469:17 | xs | -| test.cpp:468:14:468:27 | new[] | test.cpp:472:5:472:6 | xs | -| test.cpp:480:14:480:27 | new[] | test.cpp:481:16:481:17 | xs | -| test.cpp:480:14:480:27 | new[] | test.cpp:484:5:484:6 | xs | -| test.cpp:481:15:481:23 | & ... | test.cpp:481:15:481:23 | & ... | -| test.cpp:481:15:481:23 | & ... | test.cpp:481:15:481:23 | & ... | -| test.cpp:481:15:481:23 | & ... | test.cpp:482:3:482:5 | end | -| test.cpp:481:15:481:23 | & ... | test.cpp:482:3:482:5 | end | -| test.cpp:481:15:481:23 | & ... | test.cpp:486:7:486:15 | Store: ... = ... | -| test.cpp:481:15:481:23 | & ... | test.cpp:486:7:486:15 | Store: ... = ... | -| test.cpp:481:15:481:23 | & ... | test.cpp:486:7:486:15 | Store: ... = ... | -| test.cpp:481:15:481:23 | & ... | test.cpp:486:7:486:15 | Store: ... = ... | -| test.cpp:481:16:481:17 | xs | test.cpp:481:15:481:23 | & ... | -| test.cpp:481:16:481:17 | xs | test.cpp:481:15:481:23 | & ... | -| test.cpp:481:16:481:17 | xs | test.cpp:481:15:481:23 | & ... | -| test.cpp:481:16:481:17 | xs | test.cpp:481:15:481:23 | & ... | -| test.cpp:481:16:481:17 | xs | test.cpp:481:16:481:23 | access to array | -| test.cpp:481:16:481:17 | xs | test.cpp:481:16:481:23 | access to array | -| test.cpp:481:16:481:17 | xs | test.cpp:482:3:482:5 | end | -| test.cpp:481:16:481:17 | xs | test.cpp:484:5:484:8 | ... ++ | -| test.cpp:481:16:481:17 | xs | test.cpp:484:5:484:8 | ... ++ | -| test.cpp:481:16:481:17 | xs | test.cpp:484:5:484:8 | ... ++ | -| test.cpp:481:16:481:17 | xs | test.cpp:484:5:484:8 | ... ++ | -| test.cpp:481:16:481:17 | xs | test.cpp:485:9:485:10 | xs | -| test.cpp:481:16:481:17 | xs | test.cpp:486:7:486:11 | access to array | -| test.cpp:481:16:481:23 | access to array | test.cpp:481:15:481:23 | & ... | -| test.cpp:481:16:481:23 | access to array | test.cpp:481:15:481:23 | & ... | -| test.cpp:481:16:481:23 | access to array | test.cpp:481:15:481:23 | & ... | -| test.cpp:481:16:481:23 | access to array | test.cpp:481:15:481:23 | & ... | -| test.cpp:481:16:481:23 | access to array | test.cpp:482:3:482:5 | end | -| test.cpp:481:16:481:23 | access to array | test.cpp:486:7:486:15 | Store: ... = ... | -| test.cpp:481:16:481:23 | access to array | test.cpp:486:7:486:15 | Store: ... = ... | -| test.cpp:482:3:482:5 | end | test.cpp:486:7:486:15 | Store: ... = ... | -| test.cpp:484:5:484:8 | ... ++ | test.cpp:484:5:484:8 | ... ++ | -| test.cpp:484:5:484:8 | ... ++ | test.cpp:484:5:484:8 | ... ++ | -| test.cpp:484:5:484:8 | ... ++ | test.cpp:485:9:485:10 | xs | -| test.cpp:484:5:484:8 | ... ++ | test.cpp:485:9:485:10 | xs | -| test.cpp:484:5:484:8 | ... ++ | test.cpp:486:7:486:15 | Store: ... = ... | -| test.cpp:484:5:484:8 | ... ++ | test.cpp:486:7:486:15 | Store: ... = ... | -| test.cpp:484:5:484:8 | ... ++ | test.cpp:486:7:486:15 | Store: ... = ... | -| test.cpp:484:5:484:8 | ... ++ | test.cpp:486:7:486:15 | Store: ... = ... | -| test.cpp:485:9:485:10 | xs | test.cpp:486:7:486:15 | Store: ... = ... | -| test.cpp:486:7:486:11 | access to array | test.cpp:486:7:486:15 | Store: ... = ... | -| test.cpp:499:3:499:25 | ... = ... | test.cpp:499:7:499:8 | val indirection [post update] [xs] | -| test.cpp:499:7:499:8 | val indirection [post update] [xs] | test.cpp:500:3:500:5 | val indirection [xs] | -| test.cpp:499:12:499:25 | new[] | test.cpp:499:3:499:25 | ... = ... | -| test.cpp:500:3:500:5 | val indirection [xs] | test.cpp:500:7:500:8 | xs indirection | -| test.cpp:500:7:500:8 | xs indirection | test.cpp:500:7:500:8 | xs | -| test.cpp:510:16:510:33 | new[] | test.cpp:512:7:512:8 | xs | -| test.cpp:520:14:520:27 | new[] | test.cpp:526:5:526:6 | xs | -| test.cpp:532:14:532:27 | new[] | test.cpp:537:5:537:6 | xs | -| test.cpp:543:14:543:27 | new[] | test.cpp:548:5:548:6 | xs | -| test.cpp:548:5:548:6 | xs | test.cpp:548:5:548:15 | access to array | -| test.cpp:548:5:548:15 | access to array | test.cpp:548:5:548:19 | Store: ... = ... | -| test.cpp:554:14:554:27 | new[] | test.cpp:559:5:559:6 | xs | -| test.cpp:559:5:559:6 | xs | test.cpp:559:5:559:15 | access to array | -| test.cpp:559:5:559:15 | access to array | test.cpp:559:5:559:19 | Store: ... = ... | -| test.cpp:565:14:565:27 | new[] | test.cpp:570:5:570:6 | xs | -| test.cpp:576:14:576:27 | new[] | test.cpp:581:5:581:6 | xs | -| test.cpp:587:14:587:31 | new[] | test.cpp:592:5:592:6 | xs | -| test.cpp:598:14:598:31 | new[] | test.cpp:603:5:603:6 | xs | -| test.cpp:609:14:609:31 | new[] | test.cpp:614:5:614:6 | xs | -| test.cpp:620:14:620:31 | new[] | test.cpp:625:5:625:6 | xs | -| test.cpp:631:14:631:31 | new[] | test.cpp:636:5:636:6 | xs | -| test.cpp:642:14:642:31 | new[] | test.cpp:647:5:647:6 | xs | -| test.cpp:647:5:647:6 | xs | test.cpp:647:5:647:15 | access to array | -| test.cpp:647:5:647:15 | access to array | test.cpp:647:5:647:19 | Store: ... = ... | -| test.cpp:652:14:652:27 | new[] | test.cpp:653:16:653:17 | xs | -| test.cpp:652:14:652:27 | new[] | test.cpp:656:3:656:4 | xs | -| test.cpp:653:16:653:17 | xs | test.cpp:656:3:656:6 | ... ++ | -| test.cpp:653:16:653:17 | xs | test.cpp:656:3:656:6 | ... ++ | -| test.cpp:653:16:653:17 | xs | test.cpp:656:3:656:6 | ... ++ | -| test.cpp:653:16:653:17 | xs | test.cpp:656:3:656:6 | ... ++ | -| test.cpp:653:16:653:17 | xs | test.cpp:657:7:657:8 | xs | -| test.cpp:656:3:656:6 | ... ++ | test.cpp:656:3:656:6 | ... ++ | -| test.cpp:656:3:656:6 | ... ++ | test.cpp:656:3:656:6 | ... ++ | -| test.cpp:656:3:656:6 | ... ++ | test.cpp:657:7:657:8 | xs | -| test.cpp:656:3:656:6 | ... ++ | test.cpp:657:7:657:8 | xs | -| test.cpp:656:3:656:6 | ... ++ | test.cpp:662:3:662:11 | Store: ... = ... | -| test.cpp:656:3:656:6 | ... ++ | test.cpp:662:3:662:11 | Store: ... = ... | -| test.cpp:656:3:656:6 | ... ++ | test.cpp:662:3:662:11 | Store: ... = ... | -| test.cpp:656:3:656:6 | ... ++ | test.cpp:662:3:662:11 | Store: ... = ... | -| test.cpp:657:7:657:8 | xs | test.cpp:662:3:662:11 | Store: ... = ... | -| test.cpp:667:14:667:31 | new[] | test.cpp:675:7:675:8 | xs | -| test.cpp:675:7:675:8 | xs | test.cpp:675:7:675:19 | access to array | -| test.cpp:675:7:675:19 | access to array | test.cpp:675:7:675:23 | Store: ... = ... | +| test.cpp:194:23:194:28 | call to malloc | test.cpp:195:17:195:23 | ... + ... | +| test.cpp:194:23:194:28 | call to malloc | test.cpp:195:17:195:23 | ... + ... | +| test.cpp:194:23:194:28 | call to malloc | test.cpp:201:5:201:19 | ... = ... | +| test.cpp:195:17:195:23 | ... + ... | test.cpp:201:5:201:19 | ... = ... | +| test.cpp:195:17:195:23 | ... + ... | test.cpp:201:5:201:19 | ... = ... | +| test.cpp:205:23:205:28 | call to malloc | test.cpp:206:17:206:23 | ... + ... | +| test.cpp:205:23:205:28 | call to malloc | test.cpp:206:17:206:23 | ... + ... | +| test.cpp:205:23:205:28 | call to malloc | test.cpp:213:5:213:13 | ... = ... | +| test.cpp:206:17:206:23 | ... + ... | test.cpp:213:5:213:13 | ... = ... | +| test.cpp:206:17:206:23 | ... + ... | test.cpp:213:5:213:13 | ... = ... | +| test.cpp:231:18:231:30 | new[] | test.cpp:232:3:232:20 | ... = ... | +| test.cpp:238:20:238:32 | new[] | test.cpp:239:5:239:22 | ... = ... | +| test.cpp:248:24:248:30 | call to realloc | test.cpp:254:9:254:16 | ... = ... | +| test.cpp:260:13:260:24 | new[] | test.cpp:261:14:261:21 | ... + ... | +| test.cpp:260:13:260:24 | new[] | test.cpp:261:14:261:21 | ... + ... | +| test.cpp:260:13:260:24 | new[] | test.cpp:264:13:264:14 | * ... | +| test.cpp:261:14:261:21 | ... + ... | test.cpp:264:13:264:14 | * ... | +| test.cpp:261:14:261:21 | ... + ... | test.cpp:264:13:264:14 | * ... | +| test.cpp:270:13:270:24 | new[] | test.cpp:271:14:271:21 | ... + ... | +| test.cpp:270:13:270:24 | new[] | test.cpp:271:14:271:21 | ... + ... | +| test.cpp:270:13:270:24 | new[] | test.cpp:274:5:274:10 | ... = ... | +| test.cpp:271:14:271:21 | ... + ... | test.cpp:274:5:274:10 | ... = ... | +| test.cpp:271:14:271:21 | ... + ... | test.cpp:274:5:274:10 | ... = ... | +| test.cpp:304:15:304:26 | new[] | test.cpp:308:5:308:29 | ... = ... | +| test.cpp:355:14:355:27 | new[] | test.cpp:356:15:356:23 | ... + ... | +| test.cpp:355:14:355:27 | new[] | test.cpp:356:15:356:23 | ... + ... | +| test.cpp:355:14:355:27 | new[] | test.cpp:357:24:357:30 | ... + ... | +| test.cpp:355:14:355:27 | new[] | test.cpp:357:24:357:30 | ... + ... | +| test.cpp:355:14:355:27 | new[] | test.cpp:358:14:358:26 | * ... | +| test.cpp:355:14:355:27 | new[] | test.cpp:359:14:359:32 | * ... | +| test.cpp:356:15:356:23 | ... + ... | test.cpp:358:14:358:26 | * ... | +| test.cpp:356:15:356:23 | ... + ... | test.cpp:358:14:358:26 | * ... | +| test.cpp:356:15:356:23 | ... + ... | test.cpp:359:14:359:32 | * ... | +| test.cpp:356:15:356:23 | ... + ... | test.cpp:359:14:359:32 | * ... | +| test.cpp:357:24:357:30 | ... + ... | test.cpp:358:14:358:26 | * ... | +| test.cpp:357:24:357:30 | ... + ... | test.cpp:358:14:358:26 | * ... | +| test.cpp:357:24:357:30 | ... + ... | test.cpp:359:14:359:32 | * ... | +| test.cpp:357:24:357:30 | ... + ... | test.cpp:359:14:359:32 | * ... | +| test.cpp:377:14:377:27 | new[] | test.cpp:378:15:378:23 | ... + ... | +| test.cpp:377:14:377:27 | new[] | test.cpp:378:15:378:23 | ... + ... | +| test.cpp:377:14:377:27 | new[] | test.cpp:381:5:381:9 | ... ++ | +| test.cpp:377:14:377:27 | new[] | test.cpp:381:5:381:9 | ... ++ | +| test.cpp:377:14:377:27 | new[] | test.cpp:384:13:384:16 | * ... | +| test.cpp:378:15:378:23 | ... + ... | test.cpp:384:13:384:16 | * ... | +| test.cpp:378:15:378:23 | ... + ... | test.cpp:384:13:384:16 | * ... | +| test.cpp:381:5:381:9 | ... ++ | test.cpp:384:13:384:16 | * ... | +| test.cpp:381:5:381:9 | ... ++ | test.cpp:384:13:384:16 | * ... | +| test.cpp:410:14:410:27 | new[] | test.cpp:411:15:411:23 | & ... | +| test.cpp:410:14:410:27 | new[] | test.cpp:411:15:411:23 | & ... | +| test.cpp:410:14:410:27 | new[] | test.cpp:413:5:413:8 | ... ++ | +| test.cpp:410:14:410:27 | new[] | test.cpp:413:5:413:8 | ... ++ | +| test.cpp:410:14:410:27 | new[] | test.cpp:415:7:415:15 | ... = ... | +| test.cpp:411:15:411:23 | & ... | test.cpp:415:7:415:15 | ... = ... | +| test.cpp:411:15:411:23 | & ... | test.cpp:415:7:415:15 | ... = ... | +| test.cpp:413:5:413:8 | ... ++ | test.cpp:415:7:415:15 | ... = ... | +| test.cpp:413:5:413:8 | ... ++ | test.cpp:415:7:415:15 | ... = ... | +| test.cpp:421:14:421:27 | new[] | test.cpp:422:15:422:23 | & ... | +| test.cpp:421:14:421:27 | new[] | test.cpp:422:15:422:23 | & ... | +| test.cpp:421:14:421:27 | new[] | test.cpp:424:5:424:8 | ... ++ | +| test.cpp:421:14:421:27 | new[] | test.cpp:424:5:424:8 | ... ++ | +| test.cpp:421:14:421:27 | new[] | test.cpp:426:7:426:15 | ... = ... | +| test.cpp:422:15:422:23 | & ... | test.cpp:426:7:426:15 | ... = ... | +| test.cpp:422:15:422:23 | & ... | test.cpp:426:7:426:15 | ... = ... | +| test.cpp:424:5:424:8 | ... ++ | test.cpp:426:7:426:15 | ... = ... | +| test.cpp:424:5:424:8 | ... ++ | test.cpp:426:7:426:15 | ... = ... | +| test.cpp:432:14:432:27 | new[] | test.cpp:433:15:433:23 | & ... | +| test.cpp:432:14:432:27 | new[] | test.cpp:433:15:433:23 | & ... | +| test.cpp:432:14:432:27 | new[] | test.cpp:436:5:436:8 | ... ++ | +| test.cpp:432:14:432:27 | new[] | test.cpp:436:5:436:8 | ... ++ | +| test.cpp:432:14:432:27 | new[] | test.cpp:438:7:438:15 | ... = ... | +| test.cpp:433:15:433:23 | & ... | test.cpp:438:7:438:15 | ... = ... | +| test.cpp:433:15:433:23 | & ... | test.cpp:438:7:438:15 | ... = ... | +| test.cpp:436:5:436:8 | ... ++ | test.cpp:438:7:438:15 | ... = ... | +| test.cpp:436:5:436:8 | ... ++ | test.cpp:438:7:438:15 | ... = ... | +| test.cpp:444:14:444:27 | new[] | test.cpp:445:15:445:23 | & ... | +| test.cpp:444:14:444:27 | new[] | test.cpp:445:15:445:23 | & ... | +| test.cpp:444:14:444:27 | new[] | test.cpp:448:5:448:8 | ... ++ | +| test.cpp:444:14:444:27 | new[] | test.cpp:448:5:448:8 | ... ++ | +| test.cpp:444:14:444:27 | new[] | test.cpp:450:7:450:15 | ... = ... | +| test.cpp:445:15:445:23 | & ... | test.cpp:450:7:450:15 | ... = ... | +| test.cpp:445:15:445:23 | & ... | test.cpp:450:7:450:15 | ... = ... | +| test.cpp:448:5:448:8 | ... ++ | test.cpp:450:7:450:15 | ... = ... | +| test.cpp:448:5:448:8 | ... ++ | test.cpp:450:7:450:15 | ... = ... | +| test.cpp:480:14:480:27 | new[] | test.cpp:481:15:481:23 | & ... | +| test.cpp:480:14:480:27 | new[] | test.cpp:481:15:481:23 | & ... | +| test.cpp:480:14:480:27 | new[] | test.cpp:484:5:484:8 | ... ++ | +| test.cpp:480:14:480:27 | new[] | test.cpp:484:5:484:8 | ... ++ | +| test.cpp:480:14:480:27 | new[] | test.cpp:486:7:486:15 | ... = ... | +| test.cpp:481:15:481:23 | & ... | test.cpp:486:7:486:15 | ... = ... | +| test.cpp:481:15:481:23 | & ... | test.cpp:486:7:486:15 | ... = ... | +| test.cpp:484:5:484:8 | ... ++ | test.cpp:486:7:486:15 | ... = ... | +| test.cpp:484:5:484:8 | ... ++ | test.cpp:486:7:486:15 | ... = ... | +| test.cpp:543:14:543:27 | new[] | test.cpp:548:5:548:19 | ... = ... | +| test.cpp:554:14:554:27 | new[] | test.cpp:559:5:559:19 | ... = ... | +| test.cpp:642:14:642:31 | new[] | test.cpp:647:5:647:19 | ... = ... | +| test.cpp:652:14:652:27 | new[] | test.cpp:656:3:656:6 | ... ++ | +| test.cpp:652:14:652:27 | new[] | test.cpp:656:3:656:6 | ... ++ | +| test.cpp:652:14:652:27 | new[] | test.cpp:662:3:662:11 | ... = ... | +| test.cpp:656:3:656:6 | ... ++ | test.cpp:662:3:662:11 | ... = ... | +| test.cpp:656:3:656:6 | ... ++ | test.cpp:662:3:662:11 | ... = ... | +| test.cpp:667:14:667:31 | new[] | test.cpp:675:7:675:23 | ... = ... | nodes | test.cpp:4:15:4:20 | call to malloc | semmle.label | call to malloc | -| test.cpp:5:15:5:15 | p | semmle.label | p | | test.cpp:5:15:5:22 | ... + ... | semmle.label | ... + ... | | test.cpp:5:15:5:22 | ... + ... | semmle.label | ... + ... | -| test.cpp:5:15:5:22 | ... + ... | semmle.label | ... + ... | -| test.cpp:5:15:5:22 | ... + ... | semmle.label | ... + ... | -| test.cpp:6:14:6:15 | Load: * ... | semmle.label | Load: * ... | -| test.cpp:6:15:6:15 | q | semmle.label | q | -| test.cpp:6:15:6:15 | q | semmle.label | q | -| test.cpp:7:16:7:16 | q | semmle.label | q | -| test.cpp:7:16:7:16 | q | semmle.label | q | -| test.cpp:8:14:8:21 | Load: * ... | semmle.label | Load: * ... | -| test.cpp:8:16:8:16 | q | semmle.label | q | -| test.cpp:8:16:8:16 | q | semmle.label | q | -| test.cpp:8:16:8:20 | ... + ... | semmle.label | ... + ... | -| test.cpp:9:16:9:16 | q | semmle.label | q | -| test.cpp:9:16:9:16 | q | semmle.label | q | -| test.cpp:10:16:10:16 | q | semmle.label | q | -| test.cpp:10:16:10:16 | q | semmle.label | q | -| test.cpp:11:16:11:16 | q | semmle.label | q | -| test.cpp:11:16:11:16 | q | semmle.label | q | -| test.cpp:12:16:12:16 | q | semmle.label | q | +| test.cpp:6:14:6:15 | * ... | semmle.label | * ... | +| test.cpp:8:14:8:21 | * ... | semmle.label | * ... | | test.cpp:16:15:16:20 | call to malloc | semmle.label | call to malloc | -| test.cpp:17:15:17:15 | p | semmle.label | p | -| test.cpp:17:15:17:22 | ... + ... | semmle.label | ... + ... | -| test.cpp:20:14:20:21 | Load: * ... | semmle.label | Load: * ... | -| test.cpp:20:16:20:20 | ... + ... | semmle.label | ... + ... | +| test.cpp:20:14:20:21 | * ... | semmle.label | * ... | | test.cpp:28:15:28:20 | call to malloc | semmle.label | call to malloc | -| test.cpp:29:15:29:15 | p | semmle.label | p | | test.cpp:29:15:29:28 | ... + ... | semmle.label | ... + ... | | test.cpp:29:15:29:28 | ... + ... | semmle.label | ... + ... | -| test.cpp:29:15:29:28 | ... + ... | semmle.label | ... + ... | -| test.cpp:29:15:29:28 | ... + ... | semmle.label | ... + ... | -| test.cpp:30:14:30:15 | Load: * ... | semmle.label | Load: * ... | -| test.cpp:30:15:30:15 | q | semmle.label | q | -| test.cpp:30:15:30:15 | q | semmle.label | q | -| test.cpp:31:16:31:16 | q | semmle.label | q | -| test.cpp:31:16:31:16 | q | semmle.label | q | -| test.cpp:32:14:32:21 | Load: * ... | semmle.label | Load: * ... | -| test.cpp:32:16:32:16 | q | semmle.label | q | -| test.cpp:32:16:32:16 | q | semmle.label | q | -| test.cpp:32:16:32:20 | ... + ... | semmle.label | ... + ... | -| test.cpp:33:16:33:16 | q | semmle.label | q | -| test.cpp:33:16:33:16 | q | semmle.label | q | -| test.cpp:34:16:34:16 | q | semmle.label | q | -| test.cpp:34:16:34:16 | q | semmle.label | q | -| test.cpp:35:16:35:16 | q | semmle.label | q | -| test.cpp:35:16:35:16 | q | semmle.label | q | -| test.cpp:36:16:36:16 | q | semmle.label | q | +| test.cpp:30:14:30:15 | * ... | semmle.label | * ... | +| test.cpp:32:14:32:21 | * ... | semmle.label | * ... | | test.cpp:40:15:40:20 | call to malloc | semmle.label | call to malloc | -| test.cpp:41:15:41:15 | p | semmle.label | p | | test.cpp:41:15:41:28 | ... + ... | semmle.label | ... + ... | | test.cpp:41:15:41:28 | ... + ... | semmle.label | ... + ... | -| test.cpp:41:15:41:28 | ... + ... | semmle.label | ... + ... | -| test.cpp:41:15:41:28 | ... + ... | semmle.label | ... + ... | -| test.cpp:42:14:42:15 | Load: * ... | semmle.label | Load: * ... | -| test.cpp:42:15:42:15 | q | semmle.label | q | -| test.cpp:42:15:42:15 | q | semmle.label | q | -| test.cpp:43:16:43:16 | q | semmle.label | q | -| test.cpp:43:16:43:16 | q | semmle.label | q | -| test.cpp:44:14:44:21 | Load: * ... | semmle.label | Load: * ... | -| test.cpp:44:16:44:16 | q | semmle.label | q | -| test.cpp:44:16:44:16 | q | semmle.label | q | -| test.cpp:44:16:44:20 | ... + ... | semmle.label | ... + ... | -| test.cpp:45:16:45:16 | q | semmle.label | q | -| test.cpp:45:16:45:16 | q | semmle.label | q | -| test.cpp:46:16:46:16 | q | semmle.label | q | -| test.cpp:46:16:46:16 | q | semmle.label | q | -| test.cpp:47:16:47:16 | q | semmle.label | q | -| test.cpp:47:16:47:16 | q | semmle.label | q | -| test.cpp:48:16:48:16 | q | semmle.label | q | -| test.cpp:51:7:51:14 | mk_array indirection | semmle.label | mk_array indirection | +| test.cpp:42:14:42:15 | * ... | semmle.label | * ... | +| test.cpp:44:14:44:21 | * ... | semmle.label | * ... | | test.cpp:51:33:51:35 | end | semmle.label | end | | test.cpp:52:19:52:24 | call to malloc | semmle.label | call to malloc | | test.cpp:53:5:53:23 | ... = ... | semmle.label | ... = ... | -| test.cpp:53:12:53:16 | begin | semmle.label | begin | | test.cpp:53:12:53:23 | ... + ... | semmle.label | ... + ... | -| test.cpp:60:19:60:26 | call to mk_array | semmle.label | call to mk_array | | test.cpp:60:34:60:37 | mk_array output argument | semmle.label | mk_array output argument | -| test.cpp:62:32:62:34 | end | semmle.label | end | -| test.cpp:62:39:62:39 | p | semmle.label | p | -| test.cpp:66:32:66:34 | end | semmle.label | end | -| test.cpp:66:39:66:39 | p | semmle.label | p | -| test.cpp:67:9:67:14 | Store: ... = ... | semmle.label | Store: ... = ... | -| test.cpp:70:31:70:33 | end | semmle.label | end | -| test.cpp:70:38:70:38 | p | semmle.label | p | -| test.cpp:80:9:80:16 | mk_array indirection [begin] | semmle.label | mk_array indirection [begin] | +| test.cpp:67:9:67:14 | ... = ... | semmle.label | ... = ... | | test.cpp:80:9:80:16 | mk_array indirection [end] | semmle.label | mk_array indirection [end] | | test.cpp:82:5:82:28 | ... = ... | semmle.label | ... = ... | | test.cpp:82:9:82:13 | arr indirection [post update] [begin] | semmle.label | arr indirection [post update] [begin] | | test.cpp:82:17:82:22 | call to malloc | semmle.label | call to malloc | -| test.cpp:83:5:83:7 | arr indirection [begin] | semmle.label | arr indirection [begin] | | test.cpp:83:5:83:30 | ... = ... | semmle.label | ... = ... | | test.cpp:83:9:83:11 | arr indirection [post update] [end] | semmle.label | arr indirection [post update] [end] | | test.cpp:83:15:83:17 | arr indirection [begin] | semmle.label | arr indirection [begin] | | test.cpp:83:15:83:30 | ... + ... | semmle.label | ... + ... | -| test.cpp:83:19:83:23 | begin | semmle.label | begin | | test.cpp:83:19:83:23 | begin indirection | semmle.label | begin indirection | -| test.cpp:89:19:89:26 | call to mk_array [begin] | semmle.label | call to mk_array [begin] | | test.cpp:89:19:89:26 | call to mk_array [end] | semmle.label | call to mk_array [end] | -| test.cpp:91:20:91:22 | arr indirection [begin] | semmle.label | arr indirection [begin] | -| test.cpp:91:24:91:28 | begin | semmle.label | begin | -| test.cpp:91:24:91:28 | begin indirection | semmle.label | begin indirection | | test.cpp:91:36:91:38 | arr indirection [end] | semmle.label | arr indirection [end] | -| test.cpp:91:40:91:42 | end | semmle.label | end | | test.cpp:91:40:91:42 | end indirection | semmle.label | end indirection | -| test.cpp:91:47:91:47 | p | semmle.label | p | -| test.cpp:95:20:95:22 | arr indirection [begin] | semmle.label | arr indirection [begin] | -| test.cpp:95:24:95:28 | begin | semmle.label | begin | -| test.cpp:95:24:95:28 | begin indirection | semmle.label | begin indirection | | test.cpp:95:36:95:38 | arr indirection [end] | semmle.label | arr indirection [end] | -| test.cpp:95:40:95:42 | end | semmle.label | end | | test.cpp:95:40:95:42 | end indirection | semmle.label | end indirection | -| test.cpp:95:47:95:47 | p | semmle.label | p | -| test.cpp:96:9:96:14 | Store: ... = ... | semmle.label | Store: ... = ... | -| test.cpp:99:20:99:22 | arr indirection [begin] | semmle.label | arr indirection [begin] | -| test.cpp:99:24:99:28 | begin | semmle.label | begin | -| test.cpp:99:24:99:28 | begin indirection | semmle.label | begin indirection | -| test.cpp:99:35:99:37 | arr indirection [end] | semmle.label | arr indirection [end] | -| test.cpp:99:39:99:41 | end | semmle.label | end | -| test.cpp:99:39:99:41 | end indirection | semmle.label | end indirection | -| test.cpp:99:46:99:46 | p | semmle.label | p | -| test.cpp:104:27:104:29 | arr [begin] | semmle.label | arr [begin] | +| test.cpp:96:9:96:14 | ... = ... | semmle.label | ... = ... | | test.cpp:104:27:104:29 | arr [end] | semmle.label | arr [end] | -| test.cpp:105:20:105:22 | arr indirection [begin] | semmle.label | arr indirection [begin] | -| test.cpp:105:24:105:28 | begin | semmle.label | begin | -| test.cpp:105:24:105:28 | begin indirection | semmle.label | begin indirection | | test.cpp:105:36:105:38 | arr indirection [end] | semmle.label | arr indirection [end] | -| test.cpp:105:40:105:42 | end | semmle.label | end | | test.cpp:105:40:105:42 | end indirection | semmle.label | end indirection | -| test.cpp:105:47:105:47 | p | semmle.label | p | -| test.cpp:109:20:109:22 | arr indirection [begin] | semmle.label | arr indirection [begin] | -| test.cpp:109:24:109:28 | begin | semmle.label | begin | -| test.cpp:109:24:109:28 | begin indirection | semmle.label | begin indirection | | test.cpp:109:36:109:38 | arr indirection [end] | semmle.label | arr indirection [end] | -| test.cpp:109:40:109:42 | end | semmle.label | end | | test.cpp:109:40:109:42 | end indirection | semmle.label | end indirection | -| test.cpp:109:47:109:47 | p | semmle.label | p | -| test.cpp:110:9:110:14 | Store: ... = ... | semmle.label | Store: ... = ... | -| test.cpp:113:20:113:22 | arr indirection [begin] | semmle.label | arr indirection [begin] | -| test.cpp:113:24:113:28 | begin | semmle.label | begin | -| test.cpp:113:24:113:28 | begin indirection | semmle.label | begin indirection | -| test.cpp:113:35:113:37 | arr indirection [end] | semmle.label | arr indirection [end] | -| test.cpp:113:39:113:41 | end | semmle.label | end | -| test.cpp:113:39:113:41 | end indirection | semmle.label | end indirection | -| test.cpp:113:46:113:46 | p | semmle.label | p | -| test.cpp:119:18:119:25 | call to mk_array [begin] | semmle.label | call to mk_array [begin] | +| test.cpp:110:9:110:14 | ... = ... | semmle.label | ... = ... | | test.cpp:119:18:119:25 | call to mk_array [end] | semmle.label | call to mk_array [end] | -| test.cpp:124:15:124:20 | call to malloc | semmle.label | call to malloc | -| test.cpp:125:5:125:17 | ... = ... | semmle.label | ... = ... | -| test.cpp:125:9:125:13 | arr indirection [post update] [begin] | semmle.label | arr indirection [post update] [begin] | -| test.cpp:126:5:126:7 | arr indirection [begin] | semmle.label | arr indirection [begin] | -| test.cpp:126:15:126:15 | p | semmle.label | p | -| test.cpp:129:11:129:13 | arr indirection [begin] | semmle.label | arr indirection [begin] | -| test.cpp:129:15:129:19 | begin | semmle.label | begin | -| test.cpp:129:15:129:19 | begin indirection | semmle.label | begin indirection | -| test.cpp:133:11:133:13 | arr indirection [begin] | semmle.label | arr indirection [begin] | -| test.cpp:133:15:133:19 | begin | semmle.label | begin | -| test.cpp:133:15:133:19 | begin indirection | semmle.label | begin indirection | -| test.cpp:137:11:137:13 | arr indirection [begin] | semmle.label | arr indirection [begin] | -| test.cpp:137:15:137:19 | begin | semmle.label | begin | -| test.cpp:137:15:137:19 | begin indirection | semmle.label | begin indirection | -| test.cpp:141:10:141:19 | mk_array_p indirection [begin] | semmle.label | mk_array_p indirection [begin] | | test.cpp:141:10:141:19 | mk_array_p indirection [end] | semmle.label | mk_array_p indirection [end] | | test.cpp:143:5:143:29 | ... = ... | semmle.label | ... = ... | | test.cpp:143:10:143:14 | arr indirection [post update] [begin] | semmle.label | arr indirection [post update] [begin] | | test.cpp:143:18:143:23 | call to malloc | semmle.label | call to malloc | -| test.cpp:144:5:144:7 | arr indirection [begin] | semmle.label | arr indirection [begin] | | test.cpp:144:5:144:32 | ... = ... | semmle.label | ... = ... | | test.cpp:144:10:144:12 | arr indirection [post update] [end] | semmle.label | arr indirection [post update] [end] | | test.cpp:144:16:144:18 | arr indirection [begin] | semmle.label | arr indirection [begin] | | test.cpp:144:16:144:32 | ... + ... | semmle.label | ... + ... | -| test.cpp:144:21:144:25 | begin | semmle.label | begin | | test.cpp:144:21:144:25 | begin indirection | semmle.label | begin indirection | -| test.cpp:150:20:150:29 | call to mk_array_p indirection [begin] | semmle.label | call to mk_array_p indirection [begin] | | test.cpp:150:20:150:29 | call to mk_array_p indirection [end] | semmle.label | call to mk_array_p indirection [end] | -| test.cpp:152:20:152:22 | arr indirection [begin] | semmle.label | arr indirection [begin] | -| test.cpp:152:25:152:29 | begin | semmle.label | begin | -| test.cpp:152:25:152:29 | begin indirection | semmle.label | begin indirection | -| test.cpp:152:49:152:49 | p | semmle.label | p | -| test.cpp:156:20:156:22 | arr indirection [begin] | semmle.label | arr indirection [begin] | -| test.cpp:156:25:156:29 | begin | semmle.label | begin | -| test.cpp:156:25:156:29 | begin indirection | semmle.label | begin indirection | | test.cpp:156:37:156:39 | arr indirection [end] | semmle.label | arr indirection [end] | -| test.cpp:156:42:156:44 | end | semmle.label | end | | test.cpp:156:42:156:44 | end indirection | semmle.label | end indirection | -| test.cpp:156:49:156:49 | p | semmle.label | p | -| test.cpp:157:9:157:14 | Store: ... = ... | semmle.label | Store: ... = ... | -| test.cpp:160:20:160:22 | arr indirection [begin] | semmle.label | arr indirection [begin] | -| test.cpp:160:25:160:29 | begin | semmle.label | begin | -| test.cpp:160:25:160:29 | begin indirection | semmle.label | begin indirection | -| test.cpp:160:48:160:48 | p | semmle.label | p | -| test.cpp:165:29:165:31 | arr indirection [begin] | semmle.label | arr indirection [begin] | +| test.cpp:157:9:157:14 | ... = ... | semmle.label | ... = ... | | test.cpp:165:29:165:31 | arr indirection [end] | semmle.label | arr indirection [end] | -| test.cpp:166:20:166:22 | arr indirection [begin] | semmle.label | arr indirection [begin] | -| test.cpp:166:25:166:29 | begin | semmle.label | begin | -| test.cpp:166:25:166:29 | begin indirection | semmle.label | begin indirection | | test.cpp:166:37:166:39 | arr indirection [end] | semmle.label | arr indirection [end] | -| test.cpp:166:42:166:44 | end | semmle.label | end | | test.cpp:166:42:166:44 | end indirection | semmle.label | end indirection | -| test.cpp:166:49:166:49 | p | semmle.label | p | -| test.cpp:170:20:170:22 | arr indirection [begin] | semmle.label | arr indirection [begin] | -| test.cpp:170:25:170:29 | begin | semmle.label | begin | -| test.cpp:170:25:170:29 | begin indirection | semmle.label | begin indirection | | test.cpp:170:37:170:39 | arr indirection [end] | semmle.label | arr indirection [end] | -| test.cpp:170:42:170:44 | end | semmle.label | end | | test.cpp:170:42:170:44 | end indirection | semmle.label | end indirection | -| test.cpp:170:49:170:49 | p | semmle.label | p | -| test.cpp:171:9:171:14 | Store: ... = ... | semmle.label | Store: ... = ... | -| test.cpp:174:20:174:22 | arr indirection [begin] | semmle.label | arr indirection [begin] | -| test.cpp:174:25:174:29 | begin | semmle.label | begin | -| test.cpp:174:25:174:29 | begin indirection | semmle.label | begin indirection | -| test.cpp:174:36:174:38 | arr indirection [end] | semmle.label | arr indirection [end] | -| test.cpp:174:41:174:43 | end | semmle.label | end | -| test.cpp:174:41:174:43 | end indirection | semmle.label | end indirection | -| test.cpp:174:48:174:48 | p | semmle.label | p | -| test.cpp:180:19:180:28 | call to mk_array_p indirection [begin] | semmle.label | call to mk_array_p indirection [begin] | +| test.cpp:171:9:171:14 | ... = ... | semmle.label | ... = ... | | test.cpp:180:19:180:28 | call to mk_array_p indirection [end] | semmle.label | call to mk_array_p indirection [end] | -| test.cpp:188:15:188:20 | call to malloc | semmle.label | call to malloc | -| test.cpp:189:15:189:15 | p | semmle.label | p | | test.cpp:194:23:194:28 | call to malloc | semmle.label | call to malloc | -| test.cpp:195:17:195:17 | p | semmle.label | p | | test.cpp:195:17:195:23 | ... + ... | semmle.label | ... + ... | | test.cpp:195:17:195:23 | ... + ... | semmle.label | ... + ... | -| test.cpp:195:17:195:23 | ... + ... | semmle.label | ... + ... | -| test.cpp:195:17:195:23 | ... + ... | semmle.label | ... + ... | -| test.cpp:197:8:197:8 | p | semmle.label | p | -| test.cpp:197:20:197:22 | end | semmle.label | end | -| test.cpp:201:5:201:5 | p | semmle.label | p | -| test.cpp:201:5:201:12 | access to array | semmle.label | access to array | -| test.cpp:201:5:201:19 | Store: ... = ... | semmle.label | Store: ... = ... | +| test.cpp:201:5:201:19 | ... = ... | semmle.label | ... = ... | | test.cpp:205:23:205:28 | call to malloc | semmle.label | call to malloc | -| test.cpp:206:17:206:17 | p | semmle.label | p | | test.cpp:206:17:206:23 | ... + ... | semmle.label | ... + ... | | test.cpp:206:17:206:23 | ... + ... | semmle.label | ... + ... | -| test.cpp:206:17:206:23 | ... + ... | semmle.label | ... + ... | -| test.cpp:206:17:206:23 | ... + ... | semmle.label | ... + ... | -| test.cpp:208:15:208:15 | p | semmle.label | p | -| test.cpp:209:12:209:14 | end | semmle.label | end | -| test.cpp:213:5:213:6 | * ... | semmle.label | * ... | -| test.cpp:213:5:213:13 | Store: ... = ... | semmle.label | Store: ... = ... | -| test.cpp:213:6:213:6 | q | semmle.label | q | -| test.cpp:213:6:213:6 | q | semmle.label | q | -| test.cpp:221:17:221:22 | call to malloc | semmle.label | call to malloc | -| test.cpp:222:5:222:5 | p | semmle.label | p | +| test.cpp:213:5:213:13 | ... = ... | semmle.label | ... = ... | | test.cpp:231:18:231:30 | new[] | semmle.label | new[] | -| test.cpp:232:3:232:9 | newname | semmle.label | newname | -| test.cpp:232:3:232:16 | access to array | semmle.label | access to array | -| test.cpp:232:3:232:20 | Store: ... = ... | semmle.label | Store: ... = ... | +| test.cpp:232:3:232:20 | ... = ... | semmle.label | ... = ... | | test.cpp:238:20:238:32 | new[] | semmle.label | new[] | -| test.cpp:239:5:239:11 | newname | semmle.label | newname | -| test.cpp:239:5:239:18 | access to array | semmle.label | access to array | -| test.cpp:239:5:239:22 | Store: ... = ... | semmle.label | Store: ... = ... | +| test.cpp:239:5:239:22 | ... = ... | semmle.label | ... = ... | | test.cpp:248:24:248:30 | call to realloc | semmle.label | call to realloc | -| test.cpp:249:9:249:9 | p | semmle.label | p | -| test.cpp:250:22:250:22 | p | semmle.label | p | -| test.cpp:254:9:254:9 | p | semmle.label | p | -| test.cpp:254:9:254:12 | access to array | semmle.label | access to array | -| test.cpp:254:9:254:16 | Store: ... = ... | semmle.label | Store: ... = ... | +| test.cpp:254:9:254:16 | ... = ... | semmle.label | ... = ... | | test.cpp:260:13:260:24 | new[] | semmle.label | new[] | -| test.cpp:261:14:261:15 | xs | semmle.label | xs | | test.cpp:261:14:261:21 | ... + ... | semmle.label | ... + ... | | test.cpp:261:14:261:21 | ... + ... | semmle.label | ... + ... | -| test.cpp:261:14:261:21 | ... + ... | semmle.label | ... + ... | -| test.cpp:261:14:261:21 | ... + ... | semmle.label | ... + ... | -| test.cpp:262:26:262:28 | end | semmle.label | end | -| test.cpp:262:26:262:28 | end | semmle.label | end | -| test.cpp:262:31:262:31 | x | semmle.label | x | -| test.cpp:264:13:264:14 | Load: * ... | semmle.label | Load: * ... | -| test.cpp:264:14:264:14 | x | semmle.label | x | -| test.cpp:264:14:264:14 | x | semmle.label | x | +| test.cpp:264:13:264:14 | * ... | semmle.label | * ... | | test.cpp:270:13:270:24 | new[] | semmle.label | new[] | -| test.cpp:271:14:271:15 | xs | semmle.label | xs | | test.cpp:271:14:271:21 | ... + ... | semmle.label | ... + ... | | test.cpp:271:14:271:21 | ... + ... | semmle.label | ... + ... | -| test.cpp:271:14:271:21 | ... + ... | semmle.label | ... + ... | -| test.cpp:271:14:271:21 | ... + ... | semmle.label | ... + ... | -| test.cpp:272:26:272:28 | end | semmle.label | end | -| test.cpp:272:26:272:28 | end | semmle.label | end | -| test.cpp:272:31:272:31 | x | semmle.label | x | -| test.cpp:272:31:272:31 | x | semmle.label | x | -| test.cpp:274:5:274:6 | * ... | semmle.label | * ... | -| test.cpp:274:5:274:10 | Store: ... = ... | semmle.label | Store: ... = ... | -| test.cpp:274:6:274:6 | x | semmle.label | x | -| test.cpp:274:6:274:6 | x | semmle.label | x | -| test.cpp:280:13:280:24 | new[] | semmle.label | new[] | -| test.cpp:281:14:281:15 | xs | semmle.label | xs | -| test.cpp:290:13:290:24 | new[] | semmle.label | new[] | -| test.cpp:291:14:291:15 | xs | semmle.label | xs | -| test.cpp:292:30:292:30 | x | semmle.label | x | +| test.cpp:274:5:274:10 | ... = ... | semmle.label | ... = ... | | test.cpp:304:15:304:26 | new[] | semmle.label | new[] | -| test.cpp:307:5:307:6 | xs | semmle.label | xs | -| test.cpp:308:5:308:6 | xs | semmle.label | xs | -| test.cpp:308:5:308:11 | access to array | semmle.label | access to array | -| test.cpp:308:5:308:29 | Store: ... = ... | semmle.label | Store: ... = ... | -| test.cpp:313:14:313:27 | new[] | semmle.label | new[] | -| test.cpp:314:15:314:16 | xs | semmle.label | xs | -| test.cpp:325:14:325:27 | new[] | semmle.label | new[] | -| test.cpp:326:15:326:16 | xs | semmle.label | xs | -| test.cpp:326:15:326:23 | ... + ... | semmle.label | ... + ... | -| test.cpp:326:15:326:23 | ... + ... | semmle.label | ... + ... | -| test.cpp:338:8:338:15 | * ... | semmle.label | * ... | -| test.cpp:341:8:341:17 | * ... | semmle.label | * ... | -| test.cpp:342:8:342:17 | * ... | semmle.label | * ... | -| test.cpp:347:14:347:27 | new[] | semmle.label | new[] | -| test.cpp:348:15:348:16 | xs | semmle.label | xs | +| test.cpp:308:5:308:29 | ... = ... | semmle.label | ... = ... | | test.cpp:355:14:355:27 | new[] | semmle.label | new[] | -| test.cpp:356:15:356:16 | xs | semmle.label | xs | | test.cpp:356:15:356:23 | ... + ... | semmle.label | ... + ... | | test.cpp:356:15:356:23 | ... + ... | semmle.label | ... + ... | -| test.cpp:356:15:356:23 | ... + ... | semmle.label | ... + ... | -| test.cpp:356:15:356:23 | ... + ... | semmle.label | ... + ... | -| test.cpp:357:24:357:26 | end | semmle.label | end | | test.cpp:357:24:357:30 | ... + ... | semmle.label | ... + ... | | test.cpp:357:24:357:30 | ... + ... | semmle.label | ... + ... | -| test.cpp:357:24:357:30 | ... + ... | semmle.label | ... + ... | -| test.cpp:357:24:357:30 | ... + ... | semmle.label | ... + ... | -| test.cpp:358:14:358:26 | Load: * ... | semmle.label | Load: * ... | -| test.cpp:358:15:358:26 | end_plus_one | semmle.label | end_plus_one | -| test.cpp:358:15:358:26 | end_plus_one | semmle.label | end_plus_one | -| test.cpp:359:14:359:32 | Load: * ... | semmle.label | Load: * ... | -| test.cpp:359:16:359:27 | end_plus_one | semmle.label | end_plus_one | -| test.cpp:359:16:359:31 | ... + ... | semmle.label | ... + ... | -| test.cpp:363:14:363:27 | new[] | semmle.label | new[] | -| test.cpp:365:15:365:15 | p | semmle.label | p | +| test.cpp:358:14:358:26 | * ... | semmle.label | * ... | +| test.cpp:359:14:359:32 | * ... | semmle.label | * ... | | test.cpp:377:14:377:27 | new[] | semmle.label | new[] | -| test.cpp:378:15:378:16 | xs | semmle.label | xs | | test.cpp:378:15:378:23 | ... + ... | semmle.label | ... + ... | | test.cpp:378:15:378:23 | ... + ... | semmle.label | ... + ... | -| test.cpp:378:15:378:23 | ... + ... | semmle.label | ... + ... | -| test.cpp:378:15:378:23 | ... + ... | semmle.label | ... + ... | -| test.cpp:381:5:381:7 | end | semmle.label | end | | test.cpp:381:5:381:9 | ... ++ | semmle.label | ... ++ | | test.cpp:381:5:381:9 | ... ++ | semmle.label | ... ++ | -| test.cpp:384:13:384:16 | Load: * ... | semmle.label | Load: * ... | -| test.cpp:384:14:384:16 | end | semmle.label | end | -| test.cpp:388:14:388:27 | new[] | semmle.label | new[] | -| test.cpp:389:16:389:17 | xs | semmle.label | xs | -| test.cpp:392:3:392:4 | xs | semmle.label | xs | -| test.cpp:399:14:399:27 | new[] | semmle.label | new[] | -| test.cpp:400:16:400:17 | xs | semmle.label | xs | -| test.cpp:402:5:402:6 | xs | semmle.label | xs | +| test.cpp:384:13:384:16 | * ... | semmle.label | * ... | | test.cpp:410:14:410:27 | new[] | semmle.label | new[] | | test.cpp:411:15:411:23 | & ... | semmle.label | & ... | | test.cpp:411:15:411:23 | & ... | semmle.label | & ... | -| test.cpp:411:15:411:23 | & ... | semmle.label | & ... | -| test.cpp:411:15:411:23 | & ... | semmle.label | & ... | -| test.cpp:411:16:411:17 | xs | semmle.label | xs | -| test.cpp:411:16:411:23 | access to array | semmle.label | access to array | -| test.cpp:411:16:411:23 | access to array | semmle.label | access to array | -| test.cpp:412:12:412:14 | end | semmle.label | end | -| test.cpp:412:12:412:14 | end | semmle.label | end | -| test.cpp:413:5:413:6 | xs | semmle.label | xs | | test.cpp:413:5:413:8 | ... ++ | semmle.label | ... ++ | | test.cpp:413:5:413:8 | ... ++ | semmle.label | ... ++ | -| test.cpp:413:5:413:8 | ... ++ | semmle.label | ... ++ | -| test.cpp:413:5:413:8 | ... ++ | semmle.label | ... ++ | -| test.cpp:414:9:414:10 | xs | semmle.label | xs | -| test.cpp:414:14:414:16 | end | semmle.label | end | -| test.cpp:415:7:415:11 | access to array | semmle.label | access to array | -| test.cpp:415:7:415:15 | Store: ... = ... | semmle.label | Store: ... = ... | +| test.cpp:415:7:415:15 | ... = ... | semmle.label | ... = ... | | test.cpp:421:14:421:27 | new[] | semmle.label | new[] | | test.cpp:422:15:422:23 | & ... | semmle.label | & ... | | test.cpp:422:15:422:23 | & ... | semmle.label | & ... | -| test.cpp:422:15:422:23 | & ... | semmle.label | & ... | -| test.cpp:422:15:422:23 | & ... | semmle.label | & ... | -| test.cpp:422:16:422:17 | xs | semmle.label | xs | -| test.cpp:422:16:422:23 | access to array | semmle.label | access to array | -| test.cpp:422:16:422:23 | access to array | semmle.label | access to array | -| test.cpp:423:12:423:14 | end | semmle.label | end | -| test.cpp:423:12:423:14 | end | semmle.label | end | -| test.cpp:424:5:424:6 | xs | semmle.label | xs | | test.cpp:424:5:424:8 | ... ++ | semmle.label | ... ++ | | test.cpp:424:5:424:8 | ... ++ | semmle.label | ... ++ | -| test.cpp:424:5:424:8 | ... ++ | semmle.label | ... ++ | -| test.cpp:424:5:424:8 | ... ++ | semmle.label | ... ++ | -| test.cpp:425:9:425:10 | xs | semmle.label | xs | -| test.cpp:425:9:425:10 | xs | semmle.label | xs | -| test.cpp:425:18:425:20 | end | semmle.label | end | -| test.cpp:426:7:426:8 | xs | semmle.label | xs | -| test.cpp:426:7:426:11 | access to array | semmle.label | access to array | -| test.cpp:426:7:426:15 | Store: ... = ... | semmle.label | Store: ... = ... | +| test.cpp:426:7:426:15 | ... = ... | semmle.label | ... = ... | | test.cpp:432:14:432:27 | new[] | semmle.label | new[] | | test.cpp:433:15:433:23 | & ... | semmle.label | & ... | | test.cpp:433:15:433:23 | & ... | semmle.label | & ... | -| test.cpp:433:15:433:23 | & ... | semmle.label | & ... | -| test.cpp:433:15:433:23 | & ... | semmle.label | & ... | -| test.cpp:433:16:433:17 | xs | semmle.label | xs | -| test.cpp:433:16:433:23 | access to array | semmle.label | access to array | -| test.cpp:433:16:433:23 | access to array | semmle.label | access to array | -| test.cpp:434:12:434:14 | end | semmle.label | end | -| test.cpp:434:12:434:14 | end | semmle.label | end | -| test.cpp:435:5:435:7 | end | semmle.label | end | -| test.cpp:436:5:436:6 | xs | semmle.label | xs | | test.cpp:436:5:436:8 | ... ++ | semmle.label | ... ++ | | test.cpp:436:5:436:8 | ... ++ | semmle.label | ... ++ | -| test.cpp:436:5:436:8 | ... ++ | semmle.label | ... ++ | -| test.cpp:436:5:436:8 | ... ++ | semmle.label | ... ++ | -| test.cpp:437:9:437:10 | xs | semmle.label | xs | -| test.cpp:438:7:438:11 | access to array | semmle.label | access to array | -| test.cpp:438:7:438:15 | Store: ... = ... | semmle.label | Store: ... = ... | +| test.cpp:438:7:438:15 | ... = ... | semmle.label | ... = ... | | test.cpp:444:14:444:27 | new[] | semmle.label | new[] | | test.cpp:445:15:445:23 | & ... | semmle.label | & ... | | test.cpp:445:15:445:23 | & ... | semmle.label | & ... | -| test.cpp:445:15:445:23 | & ... | semmle.label | & ... | -| test.cpp:445:15:445:23 | & ... | semmle.label | & ... | -| test.cpp:445:16:445:17 | xs | semmle.label | xs | -| test.cpp:445:16:445:23 | access to array | semmle.label | access to array | -| test.cpp:445:16:445:23 | access to array | semmle.label | access to array | -| test.cpp:446:3:446:5 | end | semmle.label | end | -| test.cpp:448:5:448:6 | xs | semmle.label | xs | | test.cpp:448:5:448:8 | ... ++ | semmle.label | ... ++ | | test.cpp:448:5:448:8 | ... ++ | semmle.label | ... ++ | -| test.cpp:448:5:448:8 | ... ++ | semmle.label | ... ++ | -| test.cpp:448:5:448:8 | ... ++ | semmle.label | ... ++ | -| test.cpp:449:9:449:10 | xs | semmle.label | xs | -| test.cpp:450:7:450:11 | access to array | semmle.label | access to array | -| test.cpp:450:7:450:15 | Store: ... = ... | semmle.label | Store: ... = ... | -| test.cpp:456:14:456:31 | new[] | semmle.label | new[] | -| test.cpp:457:16:457:17 | xs | semmle.label | xs | -| test.cpp:460:5:460:6 | xs | semmle.label | xs | -| test.cpp:468:14:468:27 | new[] | semmle.label | new[] | -| test.cpp:469:16:469:17 | xs | semmle.label | xs | -| test.cpp:472:5:472:6 | xs | semmle.label | xs | +| test.cpp:450:7:450:15 | ... = ... | semmle.label | ... = ... | | test.cpp:480:14:480:27 | new[] | semmle.label | new[] | | test.cpp:481:15:481:23 | & ... | semmle.label | & ... | | test.cpp:481:15:481:23 | & ... | semmle.label | & ... | -| test.cpp:481:15:481:23 | & ... | semmle.label | & ... | -| test.cpp:481:15:481:23 | & ... | semmle.label | & ... | -| test.cpp:481:16:481:17 | xs | semmle.label | xs | -| test.cpp:481:16:481:23 | access to array | semmle.label | access to array | -| test.cpp:481:16:481:23 | access to array | semmle.label | access to array | -| test.cpp:482:3:482:5 | end | semmle.label | end | -| test.cpp:484:5:484:6 | xs | semmle.label | xs | | test.cpp:484:5:484:8 | ... ++ | semmle.label | ... ++ | | test.cpp:484:5:484:8 | ... ++ | semmle.label | ... ++ | -| test.cpp:484:5:484:8 | ... ++ | semmle.label | ... ++ | -| test.cpp:484:5:484:8 | ... ++ | semmle.label | ... ++ | -| test.cpp:485:9:485:10 | xs | semmle.label | xs | -| test.cpp:486:7:486:11 | access to array | semmle.label | access to array | -| test.cpp:486:7:486:15 | Store: ... = ... | semmle.label | Store: ... = ... | -| test.cpp:499:3:499:25 | ... = ... | semmle.label | ... = ... | -| test.cpp:499:7:499:8 | val indirection [post update] [xs] | semmle.label | val indirection [post update] [xs] | -| test.cpp:499:12:499:25 | new[] | semmle.label | new[] | -| test.cpp:500:3:500:5 | val indirection [xs] | semmle.label | val indirection [xs] | -| test.cpp:500:7:500:8 | xs | semmle.label | xs | -| test.cpp:500:7:500:8 | xs indirection | semmle.label | xs indirection | -| test.cpp:510:16:510:33 | new[] | semmle.label | new[] | -| test.cpp:512:7:512:8 | xs | semmle.label | xs | -| test.cpp:520:14:520:27 | new[] | semmle.label | new[] | -| test.cpp:526:5:526:6 | xs | semmle.label | xs | -| test.cpp:532:14:532:27 | new[] | semmle.label | new[] | -| test.cpp:537:5:537:6 | xs | semmle.label | xs | +| test.cpp:486:7:486:15 | ... = ... | semmle.label | ... = ... | | test.cpp:543:14:543:27 | new[] | semmle.label | new[] | -| test.cpp:548:5:548:6 | xs | semmle.label | xs | -| test.cpp:548:5:548:15 | access to array | semmle.label | access to array | -| test.cpp:548:5:548:19 | Store: ... = ... | semmle.label | Store: ... = ... | +| test.cpp:548:5:548:19 | ... = ... | semmle.label | ... = ... | | test.cpp:554:14:554:27 | new[] | semmle.label | new[] | -| test.cpp:559:5:559:6 | xs | semmle.label | xs | -| test.cpp:559:5:559:15 | access to array | semmle.label | access to array | -| test.cpp:559:5:559:19 | Store: ... = ... | semmle.label | Store: ... = ... | -| test.cpp:565:14:565:27 | new[] | semmle.label | new[] | -| test.cpp:570:5:570:6 | xs | semmle.label | xs | -| test.cpp:576:14:576:27 | new[] | semmle.label | new[] | -| test.cpp:581:5:581:6 | xs | semmle.label | xs | -| test.cpp:587:14:587:31 | new[] | semmle.label | new[] | -| test.cpp:592:5:592:6 | xs | semmle.label | xs | -| test.cpp:598:14:598:31 | new[] | semmle.label | new[] | -| test.cpp:603:5:603:6 | xs | semmle.label | xs | -| test.cpp:609:14:609:31 | new[] | semmle.label | new[] | -| test.cpp:614:5:614:6 | xs | semmle.label | xs | -| test.cpp:620:14:620:31 | new[] | semmle.label | new[] | -| test.cpp:625:5:625:6 | xs | semmle.label | xs | -| test.cpp:631:14:631:31 | new[] | semmle.label | new[] | -| test.cpp:636:5:636:6 | xs | semmle.label | xs | +| test.cpp:559:5:559:19 | ... = ... | semmle.label | ... = ... | | test.cpp:642:14:642:31 | new[] | semmle.label | new[] | -| test.cpp:647:5:647:6 | xs | semmle.label | xs | -| test.cpp:647:5:647:15 | access to array | semmle.label | access to array | -| test.cpp:647:5:647:19 | Store: ... = ... | semmle.label | Store: ... = ... | +| test.cpp:647:5:647:19 | ... = ... | semmle.label | ... = ... | | test.cpp:652:14:652:27 | new[] | semmle.label | new[] | -| test.cpp:653:16:653:17 | xs | semmle.label | xs | -| test.cpp:656:3:656:4 | xs | semmle.label | xs | | test.cpp:656:3:656:6 | ... ++ | semmle.label | ... ++ | | test.cpp:656:3:656:6 | ... ++ | semmle.label | ... ++ | -| test.cpp:656:3:656:6 | ... ++ | semmle.label | ... ++ | -| test.cpp:656:3:656:6 | ... ++ | semmle.label | ... ++ | -| test.cpp:657:7:657:8 | xs | semmle.label | xs | -| test.cpp:662:3:662:11 | Store: ... = ... | semmle.label | Store: ... = ... | +| test.cpp:662:3:662:11 | ... = ... | semmle.label | ... = ... | | test.cpp:667:14:667:31 | new[] | semmle.label | new[] | -| test.cpp:675:7:675:8 | xs | semmle.label | xs | -| test.cpp:675:7:675:19 | access to array | semmle.label | access to array | -| test.cpp:675:7:675:23 | Store: ... = ... | semmle.label | Store: ... = ... | +| test.cpp:675:7:675:23 | ... = ... | semmle.label | ... = ... | subpaths #select -| test.cpp:6:14:6:15 | Load: * ... | test.cpp:4:15:4:20 | call to malloc | test.cpp:6:14:6:15 | Load: * ... | This read might be out of bounds, as the pointer might be equal to $@ + $@. | test.cpp:4:15:4:20 | call to malloc | call to malloc | test.cpp:5:19:5:22 | size | size | -| test.cpp:8:14:8:21 | Load: * ... | test.cpp:4:15:4:20 | call to malloc | test.cpp:8:14:8:21 | Load: * ... | This read might be out of bounds, as the pointer might be equal to $@ + $@ + 1. | test.cpp:4:15:4:20 | call to malloc | call to malloc | test.cpp:5:19:5:22 | size | size | -| test.cpp:20:14:20:21 | Load: * ... | test.cpp:16:15:16:20 | call to malloc | test.cpp:20:14:20:21 | Load: * ... | This read might be out of bounds, as the pointer might be equal to $@ + $@. | test.cpp:16:15:16:20 | call to malloc | call to malloc | test.cpp:17:19:17:22 | size | size | -| test.cpp:30:14:30:15 | Load: * ... | test.cpp:28:15:28:20 | call to malloc | test.cpp:30:14:30:15 | Load: * ... | This read might be out of bounds, as the pointer might be equal to $@ + $@. | test.cpp:28:15:28:20 | call to malloc | call to malloc | test.cpp:29:20:29:27 | ... + ... | ... + ... | -| test.cpp:32:14:32:21 | Load: * ... | test.cpp:28:15:28:20 | call to malloc | test.cpp:32:14:32:21 | Load: * ... | This read might be out of bounds, as the pointer might be equal to $@ + $@ + 1. | test.cpp:28:15:28:20 | call to malloc | call to malloc | test.cpp:29:20:29:27 | ... + ... | ... + ... | -| test.cpp:42:14:42:15 | Load: * ... | test.cpp:40:15:40:20 | call to malloc | test.cpp:42:14:42:15 | Load: * ... | This read might be out of bounds, as the pointer might be equal to $@ + $@. | test.cpp:40:15:40:20 | call to malloc | call to malloc | test.cpp:41:20:41:27 | ... - ... | ... - ... | -| test.cpp:44:14:44:21 | Load: * ... | test.cpp:40:15:40:20 | call to malloc | test.cpp:44:14:44:21 | Load: * ... | This read might be out of bounds, as the pointer might be equal to $@ + $@ + 1. | test.cpp:40:15:40:20 | call to malloc | call to malloc | test.cpp:41:20:41:27 | ... - ... | ... - ... | -| test.cpp:67:9:67:14 | Store: ... = ... | test.cpp:52:19:52:24 | call to malloc | test.cpp:67:9:67:14 | Store: ... = ... | This write might be out of bounds, as the pointer might be equal to $@ + $@. | test.cpp:52:19:52:24 | call to malloc | call to malloc | test.cpp:53:20:53:23 | size | size | -| test.cpp:96:9:96:14 | Store: ... = ... | test.cpp:82:17:82:22 | call to malloc | test.cpp:96:9:96:14 | Store: ... = ... | This write might be out of bounds, as the pointer might be equal to $@ + $@. | test.cpp:82:17:82:22 | call to malloc | call to malloc | test.cpp:83:27:83:30 | size | size | -| test.cpp:110:9:110:14 | Store: ... = ... | test.cpp:82:17:82:22 | call to malloc | test.cpp:110:9:110:14 | Store: ... = ... | This write might be out of bounds, as the pointer might be equal to $@ + $@. | test.cpp:82:17:82:22 | call to malloc | call to malloc | test.cpp:83:27:83:30 | size | size | -| test.cpp:157:9:157:14 | Store: ... = ... | test.cpp:143:18:143:23 | call to malloc | test.cpp:157:9:157:14 | Store: ... = ... | This write might be out of bounds, as the pointer might be equal to $@ + $@. | test.cpp:143:18:143:23 | call to malloc | call to malloc | test.cpp:144:29:144:32 | size | size | -| test.cpp:171:9:171:14 | Store: ... = ... | test.cpp:143:18:143:23 | call to malloc | test.cpp:171:9:171:14 | Store: ... = ... | This write might be out of bounds, as the pointer might be equal to $@ + $@. | test.cpp:143:18:143:23 | call to malloc | call to malloc | test.cpp:144:29:144:32 | size | size | -| test.cpp:201:5:201:19 | Store: ... = ... | test.cpp:194:23:194:28 | call to malloc | test.cpp:201:5:201:19 | Store: ... = ... | This write might be out of bounds, as the pointer might be equal to $@ + $@. | test.cpp:194:23:194:28 | call to malloc | call to malloc | test.cpp:195:21:195:23 | len | len | -| test.cpp:213:5:213:13 | Store: ... = ... | test.cpp:205:23:205:28 | call to malloc | test.cpp:213:5:213:13 | Store: ... = ... | This write might be out of bounds, as the pointer might be equal to $@ + $@. | test.cpp:205:23:205:28 | call to malloc | call to malloc | test.cpp:206:21:206:23 | len | len | -| test.cpp:232:3:232:20 | Store: ... = ... | test.cpp:231:18:231:30 | new[] | test.cpp:232:3:232:20 | Store: ... = ... | This write might be out of bounds, as the pointer might be equal to $@ + $@. | test.cpp:231:18:231:30 | new[] | new[] | test.cpp:232:11:232:15 | index | index | -| test.cpp:239:5:239:22 | Store: ... = ... | test.cpp:238:20:238:32 | new[] | test.cpp:239:5:239:22 | Store: ... = ... | This write might be out of bounds, as the pointer might be equal to $@ + $@. | test.cpp:238:20:238:32 | new[] | new[] | test.cpp:239:13:239:17 | index | index | -| test.cpp:254:9:254:16 | Store: ... = ... | test.cpp:248:24:248:30 | call to realloc | test.cpp:254:9:254:16 | Store: ... = ... | This write might be out of bounds, as the pointer might be equal to $@ + $@. | test.cpp:248:24:248:30 | call to realloc | call to realloc | test.cpp:254:11:254:11 | i | i | -| test.cpp:264:13:264:14 | Load: * ... | test.cpp:260:13:260:24 | new[] | test.cpp:264:13:264:14 | Load: * ... | This read might be out of bounds, as the pointer might be equal to $@ + $@. | test.cpp:260:13:260:24 | new[] | new[] | test.cpp:261:19:261:21 | len | len | -| test.cpp:274:5:274:10 | Store: ... = ... | test.cpp:270:13:270:24 | new[] | test.cpp:274:5:274:10 | Store: ... = ... | This write might be out of bounds, as the pointer might be equal to $@ + $@. | test.cpp:270:13:270:24 | new[] | new[] | test.cpp:271:19:271:21 | len | len | -| test.cpp:308:5:308:29 | Store: ... = ... | test.cpp:304:15:304:26 | new[] | test.cpp:308:5:308:29 | Store: ... = ... | This write might be out of bounds, as the pointer might be equal to $@ + $@. | test.cpp:304:15:304:26 | new[] | new[] | test.cpp:308:8:308:10 | ... + ... | ... + ... | -| test.cpp:358:14:358:26 | Load: * ... | test.cpp:355:14:355:27 | new[] | test.cpp:358:14:358:26 | Load: * ... | This read might be out of bounds, as the pointer might be equal to $@ + $@ + 1. | test.cpp:355:14:355:27 | new[] | new[] | test.cpp:356:20:356:23 | size | size | -| test.cpp:359:14:359:32 | Load: * ... | test.cpp:355:14:355:27 | new[] | test.cpp:359:14:359:32 | Load: * ... | This read might be out of bounds, as the pointer might be equal to $@ + $@ + 2. | test.cpp:355:14:355:27 | new[] | new[] | test.cpp:356:20:356:23 | size | size | -| test.cpp:384:13:384:16 | Load: * ... | test.cpp:377:14:377:27 | new[] | test.cpp:384:13:384:16 | Load: * ... | This read might be out of bounds, as the pointer might be equal to $@ + $@. | test.cpp:377:14:377:27 | new[] | new[] | test.cpp:378:20:378:23 | size | size | -| test.cpp:415:7:415:15 | Store: ... = ... | test.cpp:410:14:410:27 | new[] | test.cpp:415:7:415:15 | Store: ... = ... | This write might be out of bounds, as the pointer might be equal to $@ + $@. | test.cpp:410:14:410:27 | new[] | new[] | test.cpp:411:19:411:22 | size | size | -| test.cpp:426:7:426:15 | Store: ... = ... | test.cpp:421:14:421:27 | new[] | test.cpp:426:7:426:15 | Store: ... = ... | This write might be out of bounds, as the pointer might be equal to $@ + $@. | test.cpp:421:14:421:27 | new[] | new[] | test.cpp:422:19:422:22 | size | size | -| test.cpp:438:7:438:15 | Store: ... = ... | test.cpp:432:14:432:27 | new[] | test.cpp:438:7:438:15 | Store: ... = ... | This write might be out of bounds, as the pointer might be equal to $@ + $@. | test.cpp:432:14:432:27 | new[] | new[] | test.cpp:433:19:433:22 | size | size | -| test.cpp:450:7:450:15 | Store: ... = ... | test.cpp:444:14:444:27 | new[] | test.cpp:450:7:450:15 | Store: ... = ... | This write might be out of bounds, as the pointer might be equal to $@ + $@. | test.cpp:444:14:444:27 | new[] | new[] | test.cpp:445:19:445:22 | size | size | -| test.cpp:486:7:486:15 | Store: ... = ... | test.cpp:480:14:480:27 | new[] | test.cpp:486:7:486:15 | Store: ... = ... | This write might be out of bounds, as the pointer might be equal to $@ + $@ + 498. | test.cpp:480:14:480:27 | new[] | new[] | test.cpp:481:19:481:22 | size | size | -| test.cpp:548:5:548:19 | Store: ... = ... | test.cpp:543:14:543:27 | new[] | test.cpp:548:5:548:19 | Store: ... = ... | This write might be out of bounds, as the pointer might be equal to $@ + $@. | test.cpp:543:14:543:27 | new[] | new[] | test.cpp:548:8:548:14 | src_pos | src_pos | -| test.cpp:559:5:559:19 | Store: ... = ... | test.cpp:554:14:554:27 | new[] | test.cpp:559:5:559:19 | Store: ... = ... | This write might be out of bounds, as the pointer might be equal to $@ + $@. | test.cpp:554:14:554:27 | new[] | new[] | test.cpp:559:8:559:14 | src_pos | src_pos | -| test.cpp:647:5:647:19 | Store: ... = ... | test.cpp:642:14:642:31 | new[] | test.cpp:647:5:647:19 | Store: ... = ... | This write might be out of bounds, as the pointer might be equal to $@ + $@. | test.cpp:642:14:642:31 | new[] | new[] | test.cpp:647:8:647:14 | src_pos | src_pos | -| test.cpp:662:3:662:11 | Store: ... = ... | test.cpp:652:14:652:27 | new[] | test.cpp:662:3:662:11 | Store: ... = ... | This write might be out of bounds, as the pointer might be equal to $@ + $@ + 1. | test.cpp:652:14:652:27 | new[] | new[] | test.cpp:653:19:653:22 | size | size | -| test.cpp:675:7:675:23 | Store: ... = ... | test.cpp:667:14:667:31 | new[] | test.cpp:675:7:675:23 | Store: ... = ... | This write might be out of bounds, as the pointer might be equal to $@ + $@. | test.cpp:667:14:667:31 | new[] | new[] | test.cpp:675:10:675:18 | ... ++ | ... ++ | +| test.cpp:6:14:6:15 | * ... | test.cpp:4:15:4:20 | call to malloc | test.cpp:6:14:6:15 | * ... | This read might be out of bounds, as the pointer might be equal to $@ + $@. | test.cpp:4:15:4:20 | call to malloc | call to malloc | test.cpp:5:19:5:22 | size | size | +| test.cpp:8:14:8:21 | * ... | test.cpp:4:15:4:20 | call to malloc | test.cpp:8:14:8:21 | * ... | This read might be out of bounds, as the pointer might be equal to $@ + $@ + 1. | test.cpp:4:15:4:20 | call to malloc | call to malloc | test.cpp:5:19:5:22 | size | size | +| test.cpp:20:14:20:21 | * ... | test.cpp:16:15:16:20 | call to malloc | test.cpp:20:14:20:21 | * ... | This read might be out of bounds, as the pointer might be equal to $@ + $@. | test.cpp:16:15:16:20 | call to malloc | call to malloc | test.cpp:17:19:17:22 | size | size | +| test.cpp:30:14:30:15 | * ... | test.cpp:28:15:28:20 | call to malloc | test.cpp:30:14:30:15 | * ... | This read might be out of bounds, as the pointer might be equal to $@ + $@. | test.cpp:28:15:28:20 | call to malloc | call to malloc | test.cpp:29:20:29:27 | ... + ... | ... + ... | +| test.cpp:32:14:32:21 | * ... | test.cpp:28:15:28:20 | call to malloc | test.cpp:32:14:32:21 | * ... | This read might be out of bounds, as the pointer might be equal to $@ + $@ + 1. | test.cpp:28:15:28:20 | call to malloc | call to malloc | test.cpp:29:20:29:27 | ... + ... | ... + ... | +| test.cpp:42:14:42:15 | * ... | test.cpp:40:15:40:20 | call to malloc | test.cpp:42:14:42:15 | * ... | This read might be out of bounds, as the pointer might be equal to $@ + $@. | test.cpp:40:15:40:20 | call to malloc | call to malloc | test.cpp:41:20:41:27 | ... - ... | ... - ... | +| test.cpp:44:14:44:21 | * ... | test.cpp:40:15:40:20 | call to malloc | test.cpp:44:14:44:21 | * ... | This read might be out of bounds, as the pointer might be equal to $@ + $@ + 1. | test.cpp:40:15:40:20 | call to malloc | call to malloc | test.cpp:41:20:41:27 | ... - ... | ... - ... | +| test.cpp:67:9:67:14 | ... = ... | test.cpp:52:19:52:24 | call to malloc | test.cpp:67:9:67:14 | ... = ... | This write might be out of bounds, as the pointer might be equal to $@ + $@. | test.cpp:52:19:52:24 | call to malloc | call to malloc | test.cpp:53:20:53:23 | size | size | +| test.cpp:96:9:96:14 | ... = ... | test.cpp:82:17:82:22 | call to malloc | test.cpp:96:9:96:14 | ... = ... | This write might be out of bounds, as the pointer might be equal to $@ + $@. | test.cpp:82:17:82:22 | call to malloc | call to malloc | test.cpp:83:27:83:30 | size | size | +| test.cpp:110:9:110:14 | ... = ... | test.cpp:82:17:82:22 | call to malloc | test.cpp:110:9:110:14 | ... = ... | This write might be out of bounds, as the pointer might be equal to $@ + $@. | test.cpp:82:17:82:22 | call to malloc | call to malloc | test.cpp:83:27:83:30 | size | size | +| test.cpp:157:9:157:14 | ... = ... | test.cpp:143:18:143:23 | call to malloc | test.cpp:157:9:157:14 | ... = ... | This write might be out of bounds, as the pointer might be equal to $@ + $@. | test.cpp:143:18:143:23 | call to malloc | call to malloc | test.cpp:144:29:144:32 | size | size | +| test.cpp:171:9:171:14 | ... = ... | test.cpp:143:18:143:23 | call to malloc | test.cpp:171:9:171:14 | ... = ... | This write might be out of bounds, as the pointer might be equal to $@ + $@. | test.cpp:143:18:143:23 | call to malloc | call to malloc | test.cpp:144:29:144:32 | size | size | +| test.cpp:201:5:201:19 | ... = ... | test.cpp:194:23:194:28 | call to malloc | test.cpp:201:5:201:19 | ... = ... | This write might be out of bounds, as the pointer might be equal to $@ + $@. | test.cpp:194:23:194:28 | call to malloc | call to malloc | test.cpp:195:21:195:23 | len | len | +| test.cpp:213:5:213:13 | ... = ... | test.cpp:205:23:205:28 | call to malloc | test.cpp:213:5:213:13 | ... = ... | This write might be out of bounds, as the pointer might be equal to $@ + $@. | test.cpp:205:23:205:28 | call to malloc | call to malloc | test.cpp:206:21:206:23 | len | len | +| test.cpp:232:3:232:20 | ... = ... | test.cpp:231:18:231:30 | new[] | test.cpp:232:3:232:20 | ... = ... | This write might be out of bounds, as the pointer might be equal to $@ + $@. | test.cpp:231:18:231:30 | new[] | new[] | test.cpp:232:11:232:15 | index | index | +| test.cpp:239:5:239:22 | ... = ... | test.cpp:238:20:238:32 | new[] | test.cpp:239:5:239:22 | ... = ... | This write might be out of bounds, as the pointer might be equal to $@ + $@. | test.cpp:238:20:238:32 | new[] | new[] | test.cpp:239:13:239:17 | index | index | +| test.cpp:254:9:254:16 | ... = ... | test.cpp:248:24:248:30 | call to realloc | test.cpp:254:9:254:16 | ... = ... | This write might be out of bounds, as the pointer might be equal to $@ + $@. | test.cpp:248:24:248:30 | call to realloc | call to realloc | test.cpp:254:11:254:11 | i | i | +| test.cpp:264:13:264:14 | * ... | test.cpp:260:13:260:24 | new[] | test.cpp:264:13:264:14 | * ... | This read might be out of bounds, as the pointer might be equal to $@ + $@. | test.cpp:260:13:260:24 | new[] | new[] | test.cpp:261:19:261:21 | len | len | +| test.cpp:274:5:274:10 | ... = ... | test.cpp:270:13:270:24 | new[] | test.cpp:274:5:274:10 | ... = ... | This write might be out of bounds, as the pointer might be equal to $@ + $@. | test.cpp:270:13:270:24 | new[] | new[] | test.cpp:271:19:271:21 | len | len | +| test.cpp:308:5:308:29 | ... = ... | test.cpp:304:15:304:26 | new[] | test.cpp:308:5:308:29 | ... = ... | This write might be out of bounds, as the pointer might be equal to $@ + $@. | test.cpp:304:15:304:26 | new[] | new[] | test.cpp:308:8:308:10 | ... + ... | ... + ... | +| test.cpp:358:14:358:26 | * ... | test.cpp:355:14:355:27 | new[] | test.cpp:358:14:358:26 | * ... | This read might be out of bounds, as the pointer might be equal to $@ + $@ + 1. | test.cpp:355:14:355:27 | new[] | new[] | test.cpp:356:20:356:23 | size | size | +| test.cpp:359:14:359:32 | * ... | test.cpp:355:14:355:27 | new[] | test.cpp:359:14:359:32 | * ... | This read might be out of bounds, as the pointer might be equal to $@ + $@ + 2. | test.cpp:355:14:355:27 | new[] | new[] | test.cpp:356:20:356:23 | size | size | +| test.cpp:384:13:384:16 | * ... | test.cpp:377:14:377:27 | new[] | test.cpp:384:13:384:16 | * ... | This read might be out of bounds, as the pointer might be equal to $@ + $@. | test.cpp:377:14:377:27 | new[] | new[] | test.cpp:378:20:378:23 | size | size | +| test.cpp:415:7:415:15 | ... = ... | test.cpp:410:14:410:27 | new[] | test.cpp:415:7:415:15 | ... = ... | This write might be out of bounds, as the pointer might be equal to $@ + $@. | test.cpp:410:14:410:27 | new[] | new[] | test.cpp:411:19:411:22 | size | size | +| test.cpp:426:7:426:15 | ... = ... | test.cpp:421:14:421:27 | new[] | test.cpp:426:7:426:15 | ... = ... | This write might be out of bounds, as the pointer might be equal to $@ + $@. | test.cpp:421:14:421:27 | new[] | new[] | test.cpp:422:19:422:22 | size | size | +| test.cpp:438:7:438:15 | ... = ... | test.cpp:432:14:432:27 | new[] | test.cpp:438:7:438:15 | ... = ... | This write might be out of bounds, as the pointer might be equal to $@ + $@. | test.cpp:432:14:432:27 | new[] | new[] | test.cpp:433:19:433:22 | size | size | +| test.cpp:450:7:450:15 | ... = ... | test.cpp:444:14:444:27 | new[] | test.cpp:450:7:450:15 | ... = ... | This write might be out of bounds, as the pointer might be equal to $@ + $@. | test.cpp:444:14:444:27 | new[] | new[] | test.cpp:445:19:445:22 | size | size | +| test.cpp:486:7:486:15 | ... = ... | test.cpp:480:14:480:27 | new[] | test.cpp:486:7:486:15 | ... = ... | This write might be out of bounds, as the pointer might be equal to $@ + $@ + 498. | test.cpp:480:14:480:27 | new[] | new[] | test.cpp:481:19:481:22 | size | size | +| test.cpp:548:5:548:19 | ... = ... | test.cpp:543:14:543:27 | new[] | test.cpp:548:5:548:19 | ... = ... | This write might be out of bounds, as the pointer might be equal to $@ + $@. | test.cpp:543:14:543:27 | new[] | new[] | test.cpp:548:8:548:14 | src_pos | src_pos | +| test.cpp:559:5:559:19 | ... = ... | test.cpp:554:14:554:27 | new[] | test.cpp:559:5:559:19 | ... = ... | This write might be out of bounds, as the pointer might be equal to $@ + $@. | test.cpp:554:14:554:27 | new[] | new[] | test.cpp:559:8:559:14 | src_pos | src_pos | +| test.cpp:647:5:647:19 | ... = ... | test.cpp:642:14:642:31 | new[] | test.cpp:647:5:647:19 | ... = ... | This write might be out of bounds, as the pointer might be equal to $@ + $@. | test.cpp:642:14:642:31 | new[] | new[] | test.cpp:647:8:647:14 | src_pos | src_pos | +| test.cpp:662:3:662:11 | ... = ... | test.cpp:652:14:652:27 | new[] | test.cpp:662:3:662:11 | ... = ... | This write might be out of bounds, as the pointer might be equal to $@ + $@ + 1. | test.cpp:652:14:652:27 | new[] | new[] | test.cpp:653:19:653:22 | size | size | +| test.cpp:675:7:675:23 | ... = ... | test.cpp:667:14:667:31 | new[] | test.cpp:675:7:675:23 | ... = ... | This write might be out of bounds, as the pointer might be equal to $@ + $@. | test.cpp:667:14:667:31 | new[] | new[] | test.cpp:675:10:675:18 | ... ++ | ... ++ | diff --git a/cpp/ql/test/experimental/query-tests/Security/CWE/CWE-193/pointer-deref/test.cpp b/cpp/ql/test/experimental/query-tests/Security/CWE/CWE-193/pointer-deref/test.cpp index 13e373bac10..1632f785a4c 100644 --- a/cpp/ql/test/experimental/query-tests/Security/CWE/CWE-193/pointer-deref/test.cpp +++ b/cpp/ql/test/experimental/query-tests/Security/CWE/CWE-193/pointer-deref/test.cpp @@ -675,3 +675,18 @@ void test33(unsigned size, unsigned src_pos) xs[dst_pos++] = 0; // GOOD [FALSE POSITIVE] } } + +int* pointer_arithmetic(int *p, int offset) { + return p + offset; +} + +void test_missing_call_context_1(unsigned size) { + int* p = new int[size]; + int* end = pointer_arithmetic(p, size); +} + +void test_missing_call_context_2(unsigned size) { + int* p = new int[size]; + int* end_minus_one = pointer_arithmetic(p, size - 1); + *end_minus_one = '0'; // GOOD +} \ No newline at end of file