errno = 0;
char * aPtr;
long aTagValue = strtol (&aSource[1], &aPtr, 10);
- if (aTagValue <= 0 || aPtr[0] != aQuote ||
+ Standard_Integer aLen = (Standard_Integer)(aPtr - &aSource[1]);
+ if (aTagValue < 0 || aLen == 0 || aPtr[0] != aQuote ||
errno == ERANGE || errno == EINVAL)
return Standard_False;
- Standard_Integer aLen = (Standard_Integer)(aPtr - &aSource[1]);
aTagEntryPtr[0] = ':';
memcpy (&aTagEntryPtr[1], &aSource[1], aLen);
aTagEntryPtr += (aLen + 1);
errno = 0;
char * ptr;
long aTagValue = strtol (aTagEntry, &ptr, 10);
- if (aTagValue <= 0 || errno == ERANGE || errno == EINVAL)
- return; // error
Standard_Integer aTagSize = (Standard_Integer)(ptr - aTagEntry);
+ if (aTagValue < 0 || aTagSize == 0 ||
+ errno == ERANGE || errno == EINVAL)
+ return; // error
// Add one XPath level to the expression in aTarget
memcpy (&aTargetPtr[0], aRefElem1, anElem1Size);
--- /dev/null
+puts "==========="
+puts "OCC27187"
+puts "==========="
+puts ""
+#################################
+# XmlMFunction_ScopeDriver fail to read and write function label including 0 tag in label path.
+#################################
+
+NewDocument Doc XmlOcaf
+# label that contains "0" tag not only in "Root"
+set Lab 0:1:4:9999:0:1:4:2001:4:2001:4:1:4:1001:4:1001
+Label Doc $Lab
+SetReference Doc 0:1 $Lab
+
+set aFileName ${imagedir}/${casename}_doc.xml
+SaveAs Doc ${aFileName}
+Close Doc
+
+# check that the reference is correctly restored
+Open ${aFileName} Doc
+if {[GetReference Doc 0:1] != $Lab} {
+ puts "Error: restored Reference attribute value is bad '[GetReference Doc 0:1]'"
+}
+Close Doc