@@ -324,6 +324,11 @@ pg_regexec(regex_t *re,
324
324
if (v -> lblastcp != NULL )
325
325
FREE (v -> lblastcp );
326
326
327
+ #ifdef REG_DEBUG
328
+ if (v -> eflags & (REG_FTRACE | REG_MTRACE ))
329
+ fflush (stdout );
330
+ #endif
331
+
327
332
return st ;
328
333
}
329
334
@@ -668,7 +673,7 @@ subset(struct vars *v,
668
673
if ((size_t ) n >= v -> nmatch )
669
674
return ;
670
675
671
- MDEBUG (("setting %d\n" , n ));
676
+ MDEBUG (("%d: setting %d = %ld-%ld \n" , sub -> id , n , LOFF ( begin ), LOFF ( end ) ));
672
677
v -> pmatch [n ].rm_so = OFF (begin );
673
678
v -> pmatch [n ].rm_eo = OFF (end );
674
679
}
@@ -697,7 +702,7 @@ cdissect(struct vars *v,
697
702
int er ;
698
703
699
704
assert (t != NULL );
700
- MDEBUG (("cdissect %ld-%ld %c \n" , LOFF (begin ), LOFF (end ), t -> op ));
705
+ MDEBUG (("%d: cdissect %c % ld-%ld\n" , t -> id , t -> op , LOFF (begin ), LOFF (end )));
701
706
702
707
/* handy place to check for operation cancel */
703
708
if (CANCEL_REQUESTED (v -> re ))
@@ -779,14 +784,14 @@ ccondissect(struct vars *v,
779
784
NOERR ();
780
785
d2 = getsubdfa (v , t -> right );
781
786
NOERR ();
782
- MDEBUG (("cconcat %d \n" , t -> id ));
787
+ MDEBUG (("%d: ccondissect %ld-%ld \n" , t -> id , LOFF ( begin ), LOFF ( end ) ));
783
788
784
789
/* pick a tentative midpoint */
785
790
mid = longest (v , d , begin , end , (int * ) NULL );
786
791
NOERR ();
787
792
if (mid == NULL )
788
793
return REG_NOMATCH ;
789
- MDEBUG (("tentative midpoint %ld\n" , LOFF (mid )));
794
+ MDEBUG (("%d: tentative midpoint %ld\n" , t -> id , LOFF (mid )));
790
795
791
796
/* iterate until satisfaction or failure */
792
797
for (;;)
@@ -801,7 +806,7 @@ ccondissect(struct vars *v,
801
806
if (er == REG_OKAY )
802
807
{
803
808
/* satisfaction */
804
- MDEBUG (("successful\n" ));
809
+ MDEBUG (("%d: successful\n" , t -> id ));
805
810
return REG_OKAY ;
806
811
}
807
812
}
@@ -814,15 +819,15 @@ ccondissect(struct vars *v,
814
819
if (mid == begin )
815
820
{
816
821
/* all possibilities exhausted */
817
- MDEBUG (("%d no midpoint\n" , t -> id ));
822
+ MDEBUG (("%d: no midpoint\n" , t -> id ));
818
823
return REG_NOMATCH ;
819
824
}
820
825
mid = longest (v , d , begin , mid - 1 , (int * ) NULL );
821
826
NOERR ();
822
827
if (mid == NULL )
823
828
{
824
829
/* failed to find a new one */
825
- MDEBUG (("%d failed midpoint\n" , t -> id ));
830
+ MDEBUG (("%d: failed midpoint\n" , t -> id ));
826
831
return REG_NOMATCH ;
827
832
}
828
833
MDEBUG (("%d: new midpoint %ld\n" , t -> id , LOFF (mid )));
@@ -857,14 +862,14 @@ crevcondissect(struct vars *v,
857
862
NOERR ();
858
863
d2 = getsubdfa (v , t -> right );
859
864
NOERR ();
860
- MDEBUG (("crevcon %d \n" , t -> id ));
865
+ MDEBUG (("%d: crevcondissect %ld-%ld \n" , t -> id , LOFF ( begin ), LOFF ( end ) ));
861
866
862
867
/* pick a tentative midpoint */
863
868
mid = shortest (v , d , begin , begin , end , (chr * * ) NULL , (int * ) NULL );
864
869
NOERR ();
865
870
if (mid == NULL )
866
871
return REG_NOMATCH ;
867
- MDEBUG (("tentative midpoint %ld\n" , LOFF (mid )));
872
+ MDEBUG (("%d: tentative midpoint %ld\n" , t -> id , LOFF (mid )));
868
873
869
874
/* iterate until satisfaction or failure */
870
875
for (;;)
@@ -879,7 +884,7 @@ crevcondissect(struct vars *v,
879
884
if (er == REG_OKAY )
880
885
{
881
886
/* satisfaction */
882
- MDEBUG (("successful\n" ));
887
+ MDEBUG (("%d: successful\n" , t -> id ));
883
888
return REG_OKAY ;
884
889
}
885
890
}
@@ -892,15 +897,15 @@ crevcondissect(struct vars *v,
892
897
if (mid == end )
893
898
{
894
899
/* all possibilities exhausted */
895
- MDEBUG (("%d no midpoint\n" , t -> id ));
900
+ MDEBUG (("%d: no midpoint\n" , t -> id ));
896
901
return REG_NOMATCH ;
897
902
}
898
903
mid = shortest (v , d , begin , mid + 1 , end , (chr * * ) NULL , (int * ) NULL );
899
904
NOERR ();
900
905
if (mid == NULL )
901
906
{
902
907
/* failed to find a new one */
903
- MDEBUG (("%d failed midpoint\n" , t -> id ));
908
+ MDEBUG (("%d: failed midpoint\n" , t -> id ));
904
909
return REG_NOMATCH ;
905
910
}
906
911
MDEBUG (("%d: new midpoint %ld\n" , t -> id , LOFF (mid )));
@@ -935,7 +940,8 @@ cbrdissect(struct vars *v,
935
940
assert (n >= 0 );
936
941
assert ((size_t ) n < v -> nmatch );
937
942
938
- MDEBUG (("cbackref n%d %d{%d-%d}\n" , t -> id , n , min , max ));
943
+ MDEBUG (("%d: cbrdissect %d{%d-%d} %ld-%ld\n" , t -> id , n , min , max ,
944
+ LOFF (begin ), LOFF (end )));
939
945
940
946
/* get the backreferenced string */
941
947
if (v -> pmatch [n ].rm_so == -1 )
@@ -952,7 +958,7 @@ cbrdissect(struct vars *v,
952
958
*/
953
959
if (begin == end && min <= max )
954
960
{
955
- MDEBUG (("cbackref matched trivially\n" ));
961
+ MDEBUG (("%d: backref matched trivially\n" , t -> id ));
956
962
return REG_OKAY ;
957
963
}
958
964
return REG_NOMATCH ;
@@ -962,7 +968,7 @@ cbrdissect(struct vars *v,
962
968
/* matches only if zero repetitions are okay */
963
969
if (min == 0 )
964
970
{
965
- MDEBUG (("cbackref matched trivially\n" ));
971
+ MDEBUG (("%d: backref matched trivially\n" , t -> id ));
966
972
return REG_OKAY ;
967
973
}
968
974
return REG_NOMATCH ;
@@ -989,7 +995,7 @@ cbrdissect(struct vars *v,
989
995
p += brlen ;
990
996
}
991
997
992
- MDEBUG (("cbackref matched\n" ));
998
+ MDEBUG (("%d: backref matched\n" , t -> id ));
993
999
return REG_OKAY ;
994
1000
}
995
1001
@@ -1011,13 +1017,13 @@ caltdissect(struct vars *v,
1011
1017
assert (t -> op == '|' );
1012
1018
assert (t -> left != NULL && t -> left -> cnfa .nstates > 0 );
1013
1019
1014
- MDEBUG (("calt n%d \n" , t -> id ));
1020
+ MDEBUG (("%d: caltdissect %ld-%ld \n" , t -> id , LOFF ( begin ), LOFF ( end ) ));
1015
1021
1016
1022
d = getsubdfa (v , t -> left );
1017
1023
NOERR ();
1018
1024
if (longest (v , d , begin , end , (int * ) NULL ) == end )
1019
1025
{
1020
- MDEBUG (("calt matched\n" ));
1026
+ MDEBUG (("%d: caltdissect matched\n" , t -> id ));
1021
1027
er = cdissect (v , t -> left , begin , end );
1022
1028
if (er != REG_NOMATCH )
1023
1029
return er ;
@@ -1054,6 +1060,8 @@ citerdissect(struct vars *v,
1054
1060
assert (!(t -> left -> flags & SHORTER ));
1055
1061
assert (begin <= end );
1056
1062
1063
+ MDEBUG (("%d: citerdissect %ld-%ld\n" , t -> id , LOFF (begin ), LOFF (end )));
1064
+
1057
1065
/*
1058
1066
* For the moment, assume the minimum number of matches is 1. If zero
1059
1067
* matches are allowed, and the target string is empty, we are allowed to
@@ -1092,7 +1100,6 @@ citerdissect(struct vars *v,
1092
1100
FREE (endpts );
1093
1101
return v -> err ;
1094
1102
}
1095
- MDEBUG (("citer %d\n" , t -> id ));
1096
1103
1097
1104
/*
1098
1105
* Our strategy is to first find a set of sub-match endpoints that are
@@ -1182,7 +1189,7 @@ citerdissect(struct vars *v,
1182
1189
if (i > k )
1183
1190
{
1184
1191
/* satisfaction */
1185
- MDEBUG (("%d successful\n" , t -> id ));
1192
+ MDEBUG (("%d: successful\n" , t -> id ));
1186
1193
FREE (endpts );
1187
1194
return REG_OKAY ;
1188
1195
}
@@ -1223,11 +1230,11 @@ citerdissect(struct vars *v,
1223
1230
*/
1224
1231
if (t -> min == 0 && begin == end )
1225
1232
{
1226
- MDEBUG (("%d allowing zero matches\n" , t -> id ));
1233
+ MDEBUG (("%d: allowing zero matches\n" , t -> id ));
1227
1234
return REG_OKAY ;
1228
1235
}
1229
1236
1230
- MDEBUG (("%d failed\n" , t -> id ));
1237
+ MDEBUG (("%d: failed\n" , t -> id ));
1231
1238
return REG_NOMATCH ;
1232
1239
}
1233
1240
@@ -1255,6 +1262,8 @@ creviterdissect(struct vars *v,
1255
1262
assert (t -> left -> flags & SHORTER );
1256
1263
assert (begin <= end );
1257
1264
1265
+ MDEBUG (("%d: creviterdissect %ld-%ld\n" , t -> id , LOFF (begin ), LOFF (end )));
1266
+
1258
1267
/*
1259
1268
* If zero matches are allowed, and target string is empty, just declare
1260
1269
* victory. OTOH, if target string isn't empty, zero matches can't work
@@ -1264,7 +1273,10 @@ creviterdissect(struct vars *v,
1264
1273
if (min_matches <= 0 )
1265
1274
{
1266
1275
if (begin == end )
1276
+ {
1277
+ MDEBUG (("%d: allowing zero matches\n" , t -> id ));
1267
1278
return REG_OKAY ;
1279
+ }
1268
1280
min_matches = 1 ;
1269
1281
}
1270
1282
@@ -1293,7 +1305,6 @@ creviterdissect(struct vars *v,
1293
1305
FREE (endpts );
1294
1306
return v -> err ;
1295
1307
}
1296
- MDEBUG (("creviter %d\n" , t -> id ));
1297
1308
1298
1309
/*
1299
1310
* Our strategy is to first find a set of sub-match endpoints that are
@@ -1389,7 +1400,7 @@ creviterdissect(struct vars *v,
1389
1400
if (i > k )
1390
1401
{
1391
1402
/* satisfaction */
1392
- MDEBUG (("%d successful\n" , t -> id ));
1403
+ MDEBUG (("%d: successful\n" , t -> id ));
1393
1404
FREE (endpts );
1394
1405
return REG_OKAY ;
1395
1406
}
@@ -1415,7 +1426,7 @@ creviterdissect(struct vars *v,
1415
1426
}
1416
1427
1417
1428
/* all possibilities exhausted */
1418
- MDEBUG (("%d failed\n" , t -> id ));
1429
+ MDEBUG (("%d: failed\n" , t -> id ));
1419
1430
FREE (endpts );
1420
1431
return REG_NOMATCH ;
1421
1432
}
0 commit comments