> I have found a critical Bug,
> when Inserting/Updating LONG Fields.
>
> The Bug only occurs if the LONG-data has a certain size.
The network protocol for LONGs requires that a special end-of-longs marker is written
and the current implementation did not reserve room for that marker.
==== //sapdb/V73/c_00/develop/sys/src/in/vin77.c#9 -
d:\V73\c_00\develop\sys\src\in\vin77.c ====
==== (in putLongvals)
@@ -4207,6 +4207,7 @@
descriptorLen = 0;
}
i28getFreePartInfo (session, REINTERPRET_CAST (void**, &dataPtr), &bufPos,
&freeLen);
+ freeLen -= descriptorLen; /* keep room for end-of-longs-marker */
#if defined (PUTVAL_REQUIRES_TWO_BYTE_COUNT)
startPtr = dataPtr;
if (forPutval) {
While searching for that bug, another flaw was detected: when an INSERT or UPDATE was
reparsed internally, some counters weren't reinitialized, which results in a core dump.
==== //sapdb/V73/c_00/develop/sys/src/in/vin77.c#9 -
d:\V73\c_00\develop\sys\src\in\vin77.c ====
==== (in fillParamInfos)
@@ -4546,6 +4547,8 @@
}
}
parseInfo->outputParamCount = 0;
+ parseInfo->inLongCount = 0;
+ parseInfo->outLongCount = 0;
for (i = 0; i < parseInfo->paramCount; ++i) {
tsp1_param_info * paramInfo = &parseInfo->paramInfo [i];
if (paramInfo->sp1i_io_type != sp1io_input) {
--
Daniel Dittmar
SAP DB, SAP Labs Berlin
[EMAIL PROTECTED]
http://www.sapdb.org/
_______________________________________________
sapdb.general mailing list
[EMAIL PROTECTED]
http://listserv.sap.com/mailman/listinfo/sapdb.general