|
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 | {
|
|