fix inaccessible nodes behaving incorrectly
This commit is contained in:
parent
7a516668bf
commit
8d0419b6ac
|
|
@ -22,12 +22,12 @@ internal class PathTree<T> where T : class {
|
|||
throw new Exception($"Found illegal catchall-wildcard in path: '{string.Join('/', path)}'");
|
||||
}
|
||||
|
||||
var leafdata = unpackedLeafData[i];
|
||||
var leafdata = unpackedLeafData[i] ?? throw new ArgumentNullException("Leafdata must not be null!");
|
||||
rootNode.AddSuccessor(path, leafdata);
|
||||
}
|
||||
}
|
||||
|
||||
internal bool TryGetPath(string reqPath, [MaybeNullWhen(false)] out T? endpoint) {
|
||||
internal bool TryGetPath(string reqPath, [MaybeNullWhen(false)] out T endpoint) {
|
||||
if (rootNode == null) {
|
||||
endpoint = null;
|
||||
return false;
|
||||
|
|
@ -58,16 +58,16 @@ internal class PathTree<T> where T : class {
|
|||
|
||||
// return found path
|
||||
endpoint = currNode.leafData;
|
||||
return true;
|
||||
return endpoint != null;
|
||||
}
|
||||
|
||||
private class Node {
|
||||
public T? leafData = null;
|
||||
public T? leafData = null; // null means that this is a node without a value (e.g. when it is just part of a path)
|
||||
public Dictionary<string, Node>? next = null;
|
||||
public Node? pathWildcardNext = null; // path wildcard
|
||||
public Node? catchAllNext = null; // trailing-catchall wildcard
|
||||
|
||||
public void AddSuccessor(string[] segments, T? newLeafData) {
|
||||
public void AddSuccessor(string[] segments, T newLeafData) {
|
||||
if (segments.Length == 0) { // actually add the data to this node
|
||||
Assert(leafData == null);
|
||||
leafData = newLeafData;
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user