In dump-xsd.c is the code
case SMI_BASETYPE_UNSIGNED64:
{
SmiUnsigned64 min, max;
min = SMI_BASETYPE_UNSIGNED64_MIN;
max = SMI_BASETYPE_UNSIGNED64_MAX;
fprintStdRestHead( f, smiType );
smiRange = smiGetFirstRange( smiType );
while( smiRange ) {
if( smiRange->minValue.value.unsigned64 < min ) {
min = smiRange->minValue.value.unsigned64;
}
if( smiRange->maxValue.value.unsigned64 > max ) {
max = smiRange->maxValue.value.unsigned64;
}
smiRange = smiGetNextRange( smiRange );
}
fprintSegment( f, 0, "<xsd:minInclusive value=\"%lu\"/>\n",
(unsigned long)min );
fprintSegment( f, 0, "<xsd:maxInclusive value=\"%lu\"/>\n",
(unsigned long)max );
fprintSegment(f, -1, "</xsd:restriction>\n");
break;
}
The behaviour may vary on different platforms, but at least on some,
the cast (unsigned long) above needs to be (unsigned long long),
or perhaps removed, otherwise only the least significant 32 bits of
the constant will be used. I'm not certain whether %lu ought to be
%llu.