| 1958 | * normally coming from ns->href. We need a namespace dict mechanism ! |
| 1959 | */ |
| 1960 | } else if (comp->dict) { |
| 1961 | if (step.name == NULL) { |
| 1962 | if (step.ns == NULL) |
| 1963 | match = 1; |
| 1964 | else |
| 1965 | match = (step.ns == ns); |
| 1966 | } else { |
| 1967 | match = ((step.name == name) && (step.ns == ns)); |
| 1968 | } |
| 1969 | #endif /* if 0 ------------------------------------------------------- */ |
| 1970 | if (match) { |
| 1971 | final = step.flags & XML_STREAM_STEP_FINAL; |
| 1972 | if (final) { |
| 1973 | ret = 1; |
| 1974 | } else if (xmlStreamCtxtAddState(stream, stepNr + 1, |
| 1975 | stream->level + 1) < 0) { |
| 1976 | return(-1); |
| 1977 | } |
| 1978 | if ((ret != 1) && (step.flags & XML_STREAM_STEP_IN_SET)) { |
| 1979 | /* |
| 1980 | * Check if we have a special case like "foo/bar//.", where |
| 1981 | * "foo" is selected as well. |
| 1982 | */ |
| 1983 | ret = 1; |
| 1984 | } |
| 1985 | } |
| 1986 | if (((comp->flags & XML_STREAM_DESC) == 0) && |
| 1987 | ((! match) || final)) { |
| 1988 | /* |
| 1989 | * Mark this expression as blocked for any evaluation at |
| 1990 | * deeper levels. Note that this includes "/foo" |
| 1991 | * expressions if the *pattern* behaviour is used. |
| 1992 | */ |
| 1993 | stream->blockLevel = stream->level +1; |
| 1994 | } |
| 1995 | next_state: |
| 1996 | i++; |
| 1997 | } |
| 1998 | |
| 1999 | stream->level++; |
| 2000 |
nothing calls this directly
no test coverage detected