|
7 | 7 | * |
8 | 8 | * |
9 | 9 | * IDENTIFICATION |
10 | | - * $PostgreSQL: pgsql/src/backend/utils/adt/tsvector_op.c,v 1.24 2009/07/16 06:33:44 petere Exp $ |
| 10 | + * $PostgreSQL: pgsql/src/backend/utils/adt/tsvector_op.c,v 1.25 2009/10/13 14:33:14 tgl Exp $ |
11 | 11 | * |
12 | 12 | *------------------------------------------------------------------------- |
13 | 13 | */ |
@@ -959,17 +959,21 @@ ts_setup_firstcall(FunctionCallInfo fcinfo, FuncCallContext *funcctx, |
959 | 959 |
|
960 | 960 | node=stat->root; |
961 | 961 | /* find leftmost value */ |
962 | | -for (;;) |
963 | | -{ |
964 | | -stat->stack[stat->stackpos]=node; |
965 | | -if (node->left) |
| 962 | +if (node==NULL) |
| 963 | +stat->stack[stat->stackpos]=NULL; |
| 964 | +else |
| 965 | +for (;;) |
966 | 966 | { |
967 | | -stat->stackpos++; |
968 | | -node=node->left; |
| 967 | +stat->stack[stat->stackpos]=node; |
| 968 | +if (node->left) |
| 969 | +{ |
| 970 | +stat->stackpos++; |
| 971 | +node=node->left; |
| 972 | +} |
| 973 | +else |
| 974 | +break; |
969 | 975 | } |
970 | | -else |
971 | | -break; |
972 | | -} |
| 976 | +Assert(stat->stackpos <=stat->maxdepth); |
973 | 977 |
|
974 | 978 | tupdesc=CreateTemplateTupleDesc(3, false); |
975 | 979 | TupleDescInitEntry(tupdesc, (AttrNumber)1,"word", |
@@ -1015,6 +1019,7 @@ walkStatEntryTree(TSVectorStat *stat) |
1015 | 1019 | else |
1016 | 1020 | break; |
1017 | 1021 | } |
| 1022 | +Assert(stat->stackpos <=stat->maxdepth); |
1018 | 1023 | } |
1019 | 1024 | else |
1020 | 1025 | { |
|