mirror of
https://gitlab.gnome.org/GNOME/libxml2.git
synced 2025-10-24 13:33:01 +03:00
xpointer: Remove support for XPointer locations
The latest spec for what it essentially an XPath extension seems to be
this working draft from 2002:
https://www.w3.org/TR/xptr-xpointer/
The xpointer() scheme is listed as "being reviewed" in the XPointer
registry since at least 2006. libxml2 seems to be the only modern
software that tries to implement this spec, but the code has many bugs
and quality issues.
If you configure --with-legacy, old symbols are retained for ABI
compatibility.
This commit is contained in:
488
testapi.c
488
testapi.c
@@ -52072,40 +52072,6 @@ test_xpathInternals(void) {
|
||||
return(test_ret);
|
||||
}
|
||||
|
||||
static int
|
||||
test_xmlXPtrBuildNodeList(void) {
|
||||
int test_ret = 0;
|
||||
|
||||
#if defined(LIBXML_XPTR_ENABLED) && defined(LIBXML_XPTR_LOCS_ENABLED)
|
||||
int mem_base;
|
||||
xmlNodePtr ret_val;
|
||||
xmlXPathObjectPtr obj; /* the XPointer result from the evaluation. */
|
||||
int n_obj;
|
||||
|
||||
for (n_obj = 0;n_obj < gen_nb_xmlXPathObjectPtr;n_obj++) {
|
||||
mem_base = xmlMemBlocks();
|
||||
obj = gen_xmlXPathObjectPtr(n_obj, 0);
|
||||
|
||||
ret_val = xmlXPtrBuildNodeList(obj);
|
||||
desret_xmlNodePtr(ret_val);
|
||||
call_tests++;
|
||||
des_xmlXPathObjectPtr(n_obj, obj, 0);
|
||||
xmlResetLastError();
|
||||
if (mem_base != xmlMemBlocks()) {
|
||||
printf("Leak of %d blocks found in xmlXPtrBuildNodeList",
|
||||
xmlMemBlocks() - mem_base);
|
||||
test_ret++;
|
||||
printf(" %d", n_obj);
|
||||
printf("\n");
|
||||
}
|
||||
}
|
||||
function_tests++;
|
||||
#endif
|
||||
|
||||
return(test_ret);
|
||||
}
|
||||
|
||||
|
||||
static int
|
||||
test_xmlXPtrEval(void) {
|
||||
int test_ret = 0;
|
||||
@@ -52147,72 +52113,6 @@ test_xmlXPtrEval(void) {
|
||||
}
|
||||
|
||||
|
||||
static int
|
||||
test_xmlXPtrEvalRangePredicate(void) {
|
||||
int test_ret = 0;
|
||||
|
||||
#if defined(LIBXML_XPTR_ENABLED) && defined(LIBXML_XPTR_LOCS_ENABLED)
|
||||
int mem_base;
|
||||
xmlXPathParserContextPtr ctxt; /* the XPointer Parser context */
|
||||
int n_ctxt;
|
||||
|
||||
for (n_ctxt = 0;n_ctxt < gen_nb_xmlXPathParserContextPtr;n_ctxt++) {
|
||||
mem_base = xmlMemBlocks();
|
||||
ctxt = gen_xmlXPathParserContextPtr(n_ctxt, 0);
|
||||
|
||||
xmlXPtrEvalRangePredicate(ctxt);
|
||||
call_tests++;
|
||||
des_xmlXPathParserContextPtr(n_ctxt, ctxt, 0);
|
||||
xmlResetLastError();
|
||||
if (mem_base != xmlMemBlocks()) {
|
||||
printf("Leak of %d blocks found in xmlXPtrEvalRangePredicate",
|
||||
xmlMemBlocks() - mem_base);
|
||||
test_ret++;
|
||||
printf(" %d", n_ctxt);
|
||||
printf("\n");
|
||||
}
|
||||
}
|
||||
function_tests++;
|
||||
#endif
|
||||
|
||||
return(test_ret);
|
||||
}
|
||||
|
||||
|
||||
static int
|
||||
test_xmlXPtrNewCollapsedRange(void) {
|
||||
int test_ret = 0;
|
||||
|
||||
#if defined(LIBXML_XPTR_ENABLED) && defined(LIBXML_XPTR_LOCS_ENABLED)
|
||||
int mem_base;
|
||||
xmlXPathObjectPtr ret_val;
|
||||
xmlNodePtr start; /* the starting and ending node */
|
||||
int n_start;
|
||||
|
||||
for (n_start = 0;n_start < gen_nb_xmlNodePtr;n_start++) {
|
||||
mem_base = xmlMemBlocks();
|
||||
start = gen_xmlNodePtr(n_start, 0);
|
||||
|
||||
ret_val = xmlXPtrNewCollapsedRange(start);
|
||||
desret_xmlXPathObjectPtr(ret_val);
|
||||
call_tests++;
|
||||
des_xmlNodePtr(n_start, start, 0);
|
||||
xmlResetLastError();
|
||||
if (mem_base != xmlMemBlocks()) {
|
||||
printf("Leak of %d blocks found in xmlXPtrNewCollapsedRange",
|
||||
xmlMemBlocks() - mem_base);
|
||||
test_ret++;
|
||||
printf(" %d", n_start);
|
||||
printf("\n");
|
||||
}
|
||||
}
|
||||
function_tests++;
|
||||
#endif
|
||||
|
||||
return(test_ret);
|
||||
}
|
||||
|
||||
|
||||
static int
|
||||
test_xmlXPtrNewContext(void) {
|
||||
int test_ret = 0;
|
||||
@@ -52222,399 +52122,13 @@ test_xmlXPtrNewContext(void) {
|
||||
return(test_ret);
|
||||
}
|
||||
|
||||
|
||||
static int
|
||||
test_xmlXPtrNewLocationSetNodeSet(void) {
|
||||
int test_ret = 0;
|
||||
|
||||
#if defined(LIBXML_XPTR_ENABLED) && defined(LIBXML_XPTR_LOCS_ENABLED)
|
||||
int mem_base;
|
||||
xmlXPathObjectPtr ret_val;
|
||||
xmlNodeSetPtr set; /* a node set */
|
||||
int n_set;
|
||||
|
||||
for (n_set = 0;n_set < gen_nb_xmlNodeSetPtr;n_set++) {
|
||||
mem_base = xmlMemBlocks();
|
||||
set = gen_xmlNodeSetPtr(n_set, 0);
|
||||
|
||||
ret_val = xmlXPtrNewLocationSetNodeSet(set);
|
||||
desret_xmlXPathObjectPtr(ret_val);
|
||||
call_tests++;
|
||||
des_xmlNodeSetPtr(n_set, set, 0);
|
||||
xmlResetLastError();
|
||||
if (mem_base != xmlMemBlocks()) {
|
||||
printf("Leak of %d blocks found in xmlXPtrNewLocationSetNodeSet",
|
||||
xmlMemBlocks() - mem_base);
|
||||
test_ret++;
|
||||
printf(" %d", n_set);
|
||||
printf("\n");
|
||||
}
|
||||
}
|
||||
function_tests++;
|
||||
#endif
|
||||
|
||||
return(test_ret);
|
||||
}
|
||||
|
||||
|
||||
static int
|
||||
test_xmlXPtrNewLocationSetNodes(void) {
|
||||
int test_ret = 0;
|
||||
|
||||
#if defined(LIBXML_XPTR_ENABLED) && defined(LIBXML_XPTR_LOCS_ENABLED)
|
||||
int mem_base;
|
||||
xmlXPathObjectPtr ret_val;
|
||||
xmlNodePtr start; /* the start NodePtr value */
|
||||
int n_start;
|
||||
xmlNodePtr end; /* the end NodePtr value or NULL */
|
||||
int n_end;
|
||||
|
||||
for (n_start = 0;n_start < gen_nb_xmlNodePtr;n_start++) {
|
||||
for (n_end = 0;n_end < gen_nb_xmlNodePtr;n_end++) {
|
||||
mem_base = xmlMemBlocks();
|
||||
start = gen_xmlNodePtr(n_start, 0);
|
||||
end = gen_xmlNodePtr(n_end, 1);
|
||||
|
||||
ret_val = xmlXPtrNewLocationSetNodes(start, end);
|
||||
desret_xmlXPathObjectPtr(ret_val);
|
||||
call_tests++;
|
||||
des_xmlNodePtr(n_start, start, 0);
|
||||
des_xmlNodePtr(n_end, end, 1);
|
||||
xmlResetLastError();
|
||||
if (mem_base != xmlMemBlocks()) {
|
||||
printf("Leak of %d blocks found in xmlXPtrNewLocationSetNodes",
|
||||
xmlMemBlocks() - mem_base);
|
||||
test_ret++;
|
||||
printf(" %d", n_start);
|
||||
printf(" %d", n_end);
|
||||
printf("\n");
|
||||
}
|
||||
}
|
||||
}
|
||||
function_tests++;
|
||||
#endif
|
||||
|
||||
return(test_ret);
|
||||
}
|
||||
|
||||
|
||||
static int
|
||||
test_xmlXPtrNewRange(void) {
|
||||
int test_ret = 0;
|
||||
|
||||
#if defined(LIBXML_XPTR_ENABLED) && defined(LIBXML_XPTR_LOCS_ENABLED)
|
||||
int mem_base;
|
||||
xmlXPathObjectPtr ret_val;
|
||||
xmlNodePtr start; /* the starting node */
|
||||
int n_start;
|
||||
int startindex; /* the start index */
|
||||
int n_startindex;
|
||||
xmlNodePtr end; /* the ending point */
|
||||
int n_end;
|
||||
int endindex; /* the ending index */
|
||||
int n_endindex;
|
||||
|
||||
for (n_start = 0;n_start < gen_nb_xmlNodePtr;n_start++) {
|
||||
for (n_startindex = 0;n_startindex < gen_nb_int;n_startindex++) {
|
||||
for (n_end = 0;n_end < gen_nb_xmlNodePtr;n_end++) {
|
||||
for (n_endindex = 0;n_endindex < gen_nb_int;n_endindex++) {
|
||||
mem_base = xmlMemBlocks();
|
||||
start = gen_xmlNodePtr(n_start, 0);
|
||||
startindex = gen_int(n_startindex, 1);
|
||||
end = gen_xmlNodePtr(n_end, 2);
|
||||
endindex = gen_int(n_endindex, 3);
|
||||
|
||||
ret_val = xmlXPtrNewRange(start, startindex, end, endindex);
|
||||
desret_xmlXPathObjectPtr(ret_val);
|
||||
call_tests++;
|
||||
des_xmlNodePtr(n_start, start, 0);
|
||||
des_int(n_startindex, startindex, 1);
|
||||
des_xmlNodePtr(n_end, end, 2);
|
||||
des_int(n_endindex, endindex, 3);
|
||||
xmlResetLastError();
|
||||
if (mem_base != xmlMemBlocks()) {
|
||||
printf("Leak of %d blocks found in xmlXPtrNewRange",
|
||||
xmlMemBlocks() - mem_base);
|
||||
test_ret++;
|
||||
printf(" %d", n_start);
|
||||
printf(" %d", n_startindex);
|
||||
printf(" %d", n_end);
|
||||
printf(" %d", n_endindex);
|
||||
printf("\n");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
function_tests++;
|
||||
#endif
|
||||
|
||||
return(test_ret);
|
||||
}
|
||||
|
||||
|
||||
static int
|
||||
test_xmlXPtrNewRangeNodeObject(void) {
|
||||
int test_ret = 0;
|
||||
|
||||
#if defined(LIBXML_XPTR_ENABLED) && defined(LIBXML_XPTR_LOCS_ENABLED)
|
||||
int mem_base;
|
||||
xmlXPathObjectPtr ret_val;
|
||||
xmlNodePtr start; /* the starting node */
|
||||
int n_start;
|
||||
xmlXPathObjectPtr end; /* the ending object */
|
||||
int n_end;
|
||||
|
||||
for (n_start = 0;n_start < gen_nb_xmlNodePtr;n_start++) {
|
||||
for (n_end = 0;n_end < gen_nb_xmlXPathObjectPtr;n_end++) {
|
||||
mem_base = xmlMemBlocks();
|
||||
start = gen_xmlNodePtr(n_start, 0);
|
||||
end = gen_xmlXPathObjectPtr(n_end, 1);
|
||||
|
||||
ret_val = xmlXPtrNewRangeNodeObject(start, end);
|
||||
desret_xmlXPathObjectPtr(ret_val);
|
||||
call_tests++;
|
||||
des_xmlNodePtr(n_start, start, 0);
|
||||
des_xmlXPathObjectPtr(n_end, end, 1);
|
||||
xmlResetLastError();
|
||||
if (mem_base != xmlMemBlocks()) {
|
||||
printf("Leak of %d blocks found in xmlXPtrNewRangeNodeObject",
|
||||
xmlMemBlocks() - mem_base);
|
||||
test_ret++;
|
||||
printf(" %d", n_start);
|
||||
printf(" %d", n_end);
|
||||
printf("\n");
|
||||
}
|
||||
}
|
||||
}
|
||||
function_tests++;
|
||||
#endif
|
||||
|
||||
return(test_ret);
|
||||
}
|
||||
|
||||
|
||||
static int
|
||||
test_xmlXPtrNewRangeNodePoint(void) {
|
||||
int test_ret = 0;
|
||||
|
||||
#if defined(LIBXML_XPTR_ENABLED) && defined(LIBXML_XPTR_LOCS_ENABLED)
|
||||
int mem_base;
|
||||
xmlXPathObjectPtr ret_val;
|
||||
xmlNodePtr start; /* the starting node */
|
||||
int n_start;
|
||||
xmlXPathObjectPtr end; /* the ending point */
|
||||
int n_end;
|
||||
|
||||
for (n_start = 0;n_start < gen_nb_xmlNodePtr;n_start++) {
|
||||
for (n_end = 0;n_end < gen_nb_xmlXPathObjectPtr;n_end++) {
|
||||
mem_base = xmlMemBlocks();
|
||||
start = gen_xmlNodePtr(n_start, 0);
|
||||
end = gen_xmlXPathObjectPtr(n_end, 1);
|
||||
|
||||
ret_val = xmlXPtrNewRangeNodePoint(start, end);
|
||||
desret_xmlXPathObjectPtr(ret_val);
|
||||
call_tests++;
|
||||
des_xmlNodePtr(n_start, start, 0);
|
||||
des_xmlXPathObjectPtr(n_end, end, 1);
|
||||
xmlResetLastError();
|
||||
if (mem_base != xmlMemBlocks()) {
|
||||
printf("Leak of %d blocks found in xmlXPtrNewRangeNodePoint",
|
||||
xmlMemBlocks() - mem_base);
|
||||
test_ret++;
|
||||
printf(" %d", n_start);
|
||||
printf(" %d", n_end);
|
||||
printf("\n");
|
||||
}
|
||||
}
|
||||
}
|
||||
function_tests++;
|
||||
#endif
|
||||
|
||||
return(test_ret);
|
||||
}
|
||||
|
||||
|
||||
static int
|
||||
test_xmlXPtrNewRangeNodes(void) {
|
||||
int test_ret = 0;
|
||||
|
||||
#if defined(LIBXML_XPTR_ENABLED) && defined(LIBXML_XPTR_LOCS_ENABLED)
|
||||
int mem_base;
|
||||
xmlXPathObjectPtr ret_val;
|
||||
xmlNodePtr start; /* the starting node */
|
||||
int n_start;
|
||||
xmlNodePtr end; /* the ending node */
|
||||
int n_end;
|
||||
|
||||
for (n_start = 0;n_start < gen_nb_xmlNodePtr;n_start++) {
|
||||
for (n_end = 0;n_end < gen_nb_xmlNodePtr;n_end++) {
|
||||
mem_base = xmlMemBlocks();
|
||||
start = gen_xmlNodePtr(n_start, 0);
|
||||
end = gen_xmlNodePtr(n_end, 1);
|
||||
|
||||
ret_val = xmlXPtrNewRangeNodes(start, end);
|
||||
desret_xmlXPathObjectPtr(ret_val);
|
||||
call_tests++;
|
||||
des_xmlNodePtr(n_start, start, 0);
|
||||
des_xmlNodePtr(n_end, end, 1);
|
||||
xmlResetLastError();
|
||||
if (mem_base != xmlMemBlocks()) {
|
||||
printf("Leak of %d blocks found in xmlXPtrNewRangeNodes",
|
||||
xmlMemBlocks() - mem_base);
|
||||
test_ret++;
|
||||
printf(" %d", n_start);
|
||||
printf(" %d", n_end);
|
||||
printf("\n");
|
||||
}
|
||||
}
|
||||
}
|
||||
function_tests++;
|
||||
#endif
|
||||
|
||||
return(test_ret);
|
||||
}
|
||||
|
||||
|
||||
static int
|
||||
test_xmlXPtrNewRangePointNode(void) {
|
||||
int test_ret = 0;
|
||||
|
||||
#if defined(LIBXML_XPTR_ENABLED) && defined(LIBXML_XPTR_LOCS_ENABLED)
|
||||
int mem_base;
|
||||
xmlXPathObjectPtr ret_val;
|
||||
xmlXPathObjectPtr start; /* the starting point */
|
||||
int n_start;
|
||||
xmlNodePtr end; /* the ending node */
|
||||
int n_end;
|
||||
|
||||
for (n_start = 0;n_start < gen_nb_xmlXPathObjectPtr;n_start++) {
|
||||
for (n_end = 0;n_end < gen_nb_xmlNodePtr;n_end++) {
|
||||
mem_base = xmlMemBlocks();
|
||||
start = gen_xmlXPathObjectPtr(n_start, 0);
|
||||
end = gen_xmlNodePtr(n_end, 1);
|
||||
|
||||
ret_val = xmlXPtrNewRangePointNode(start, end);
|
||||
desret_xmlXPathObjectPtr(ret_val);
|
||||
call_tests++;
|
||||
des_xmlXPathObjectPtr(n_start, start, 0);
|
||||
des_xmlNodePtr(n_end, end, 1);
|
||||
xmlResetLastError();
|
||||
if (mem_base != xmlMemBlocks()) {
|
||||
printf("Leak of %d blocks found in xmlXPtrNewRangePointNode",
|
||||
xmlMemBlocks() - mem_base);
|
||||
test_ret++;
|
||||
printf(" %d", n_start);
|
||||
printf(" %d", n_end);
|
||||
printf("\n");
|
||||
}
|
||||
}
|
||||
}
|
||||
function_tests++;
|
||||
#endif
|
||||
|
||||
return(test_ret);
|
||||
}
|
||||
|
||||
|
||||
static int
|
||||
test_xmlXPtrNewRangePoints(void) {
|
||||
int test_ret = 0;
|
||||
|
||||
#if defined(LIBXML_XPTR_ENABLED) && defined(LIBXML_XPTR_LOCS_ENABLED)
|
||||
int mem_base;
|
||||
xmlXPathObjectPtr ret_val;
|
||||
xmlXPathObjectPtr start; /* the starting point */
|
||||
int n_start;
|
||||
xmlXPathObjectPtr end; /* the ending point */
|
||||
int n_end;
|
||||
|
||||
for (n_start = 0;n_start < gen_nb_xmlXPathObjectPtr;n_start++) {
|
||||
for (n_end = 0;n_end < gen_nb_xmlXPathObjectPtr;n_end++) {
|
||||
mem_base = xmlMemBlocks();
|
||||
start = gen_xmlXPathObjectPtr(n_start, 0);
|
||||
end = gen_xmlXPathObjectPtr(n_end, 1);
|
||||
|
||||
ret_val = xmlXPtrNewRangePoints(start, end);
|
||||
desret_xmlXPathObjectPtr(ret_val);
|
||||
call_tests++;
|
||||
des_xmlXPathObjectPtr(n_start, start, 0);
|
||||
des_xmlXPathObjectPtr(n_end, end, 1);
|
||||
xmlResetLastError();
|
||||
if (mem_base != xmlMemBlocks()) {
|
||||
printf("Leak of %d blocks found in xmlXPtrNewRangePoints",
|
||||
xmlMemBlocks() - mem_base);
|
||||
test_ret++;
|
||||
printf(" %d", n_start);
|
||||
printf(" %d", n_end);
|
||||
printf("\n");
|
||||
}
|
||||
}
|
||||
}
|
||||
function_tests++;
|
||||
#endif
|
||||
|
||||
return(test_ret);
|
||||
}
|
||||
|
||||
|
||||
static int
|
||||
test_xmlXPtrRangeToFunction(void) {
|
||||
int test_ret = 0;
|
||||
|
||||
#if defined(LIBXML_XPTR_ENABLED) && defined(LIBXML_XPTR_LOCS_ENABLED)
|
||||
int mem_base;
|
||||
xmlXPathParserContextPtr ctxt; /* the XPointer Parser context */
|
||||
int n_ctxt;
|
||||
int nargs; /* the number of args */
|
||||
int n_nargs;
|
||||
|
||||
for (n_ctxt = 0;n_ctxt < gen_nb_xmlXPathParserContextPtr;n_ctxt++) {
|
||||
for (n_nargs = 0;n_nargs < gen_nb_int;n_nargs++) {
|
||||
mem_base = xmlMemBlocks();
|
||||
ctxt = gen_xmlXPathParserContextPtr(n_ctxt, 0);
|
||||
nargs = gen_int(n_nargs, 1);
|
||||
|
||||
xmlXPtrRangeToFunction(ctxt, nargs);
|
||||
call_tests++;
|
||||
des_xmlXPathParserContextPtr(n_ctxt, ctxt, 0);
|
||||
des_int(n_nargs, nargs, 1);
|
||||
xmlResetLastError();
|
||||
if (mem_base != xmlMemBlocks()) {
|
||||
printf("Leak of %d blocks found in xmlXPtrRangeToFunction",
|
||||
xmlMemBlocks() - mem_base);
|
||||
test_ret++;
|
||||
printf(" %d", n_ctxt);
|
||||
printf(" %d", n_nargs);
|
||||
printf("\n");
|
||||
}
|
||||
}
|
||||
}
|
||||
function_tests++;
|
||||
#endif
|
||||
|
||||
return(test_ret);
|
||||
}
|
||||
|
||||
static int
|
||||
test_xpointer(void) {
|
||||
int test_ret = 0;
|
||||
|
||||
if (quiet == 0) printf("Testing xpointer : 13 of 21 functions ...\n");
|
||||
test_ret += test_xmlXPtrBuildNodeList();
|
||||
if (quiet == 0) printf("Testing xpointer : 1 of 2 functions ...\n");
|
||||
test_ret += test_xmlXPtrEval();
|
||||
test_ret += test_xmlXPtrEvalRangePredicate();
|
||||
test_ret += test_xmlXPtrNewCollapsedRange();
|
||||
test_ret += test_xmlXPtrNewContext();
|
||||
test_ret += test_xmlXPtrNewLocationSetNodeSet();
|
||||
test_ret += test_xmlXPtrNewLocationSetNodes();
|
||||
test_ret += test_xmlXPtrNewRange();
|
||||
test_ret += test_xmlXPtrNewRangeNodeObject();
|
||||
test_ret += test_xmlXPtrNewRangeNodePoint();
|
||||
test_ret += test_xmlXPtrNewRangeNodes();
|
||||
test_ret += test_xmlXPtrNewRangePointNode();
|
||||
test_ret += test_xmlXPtrNewRangePoints();
|
||||
test_ret += test_xmlXPtrRangeToFunction();
|
||||
|
||||
if (test_ret != 0)
|
||||
printf("Module xpointer: %d errors\n", test_ret);
|
||||
|
||||
Reference in New Issue
Block a user