File tree 1 file changed +27
-0
lines changed
Filter options
1 file changed +27
-0
lines changed
Original file line number Diff line number Diff line change @@ -604,6 +604,31 @@ queryHasPositive(ExtractedNode *node)
604
604
}
605
605
}
606
606
607
+ static bool
608
+ needRecheckRecursive (ExtractedNode * node , bool not )
609
+ {
610
+ int i ;
611
+ switch (node -> type )
612
+ {
613
+ case eAnd :
614
+ case eOr :
615
+ if (node -> type == eAnd && !not && node -> indirect )
616
+ return true;
617
+ if (node -> type == eOr && not && node -> indirect )
618
+ return true;
619
+ for (i = 0 ; i < node -> args .count ; i ++ )
620
+ {
621
+ if (needRecheckRecursive (node -> args .items [i ], not ))
622
+ return true;
623
+ }
624
+ return false;
625
+ case eNot :
626
+ return !needRecheckRecursive (node -> args .items [0 ], !not );
627
+ case eScalar :
628
+ return false;
629
+ }
630
+ }
631
+
607
632
ExtractedNode *
608
633
extractJsQuery (JsQuery * jq , MakeEntryHandler handler , Pointer extra )
609
634
{
@@ -618,6 +643,8 @@ extractJsQuery(JsQuery *jq, MakeEntryHandler handler, Pointer extra)
618
643
}
619
644
if (root && !queryHasPositive (root ))
620
645
root = NULL ;
646
+ if (root )
647
+ root -> indirect = needRecheckRecursive (root , false);
621
648
return root ;
622
649
}
623
650
You can’t perform that action at this time.
0 commit comments