diff --git a/wst/trunk/base_service_intf.pas b/wst/trunk/base_service_intf.pas index 3a4df8de3..ed454d83e 100644 --- a/wst/trunk/base_service_intf.pas +++ b/wst/trunk/base_service_intf.pas @@ -4065,9 +4065,9 @@ end; class function TDateRemotable.ParseDate(const ABuffer: string): TDateTime; var buffer : string; - bufferPos, bufferLen : Integer; + bufferPos, bufferLen : PtrUInt; - function ReadInt() : Integer; + function ReadInt() : PtrUInt; var neg : Boolean; s : shortstring; @@ -4105,27 +4105,30 @@ begin //'-'? yyyy '-' mm '-' dd 'T' hh ':' mm ':' ss ('.' s+)? (zzzzzz)? buffer := Trim(ABuffer); - bufferPos := 0; + bufferPos := 1; bufferLen := Length(buffer); + if ( bufferLen > 0 ) then begin + y := ReadInt(); + Inc(bufferPos); - y := ReadInt(); - Inc(bufferPos); - - m := ReadInt(); - Inc(bufferPos); - - d := ReadInt(); - Inc(bufferPos); - - hh := ReadInt(); - Inc(bufferPos); + m := ReadInt(); + Inc(bufferPos); - mn := ReadInt(); - Inc(bufferPos); + d := ReadInt(); + Inc(bufferPos); - ss := ReadInt(); + hh := ReadInt(); + Inc(bufferPos); - Result := EncodeDate(y,m,d) + EncodeTime(hh,mn,ss,0); + mn := ReadInt(); + Inc(bufferPos); + + ss := ReadInt(); + + Result := EncodeDate(y,m,d) + EncodeTime(hh,mn,ss,0); + end else begin + Result := 0; + end; end; { TBaseDateRemotable } diff --git a/wst/trunk/base_soap_formatter.pas b/wst/trunk/base_soap_formatter.pas index ebb339e1c..3c1cf1b2e 100644 --- a/wst/trunk/base_soap_formatter.pas +++ b/wst/trunk/base_soap_formatter.pas @@ -539,7 +539,10 @@ Var i,c : Integer; begin AResAtt := ''; - If Assigned(ANode) And Assigned(ANode.Attributes) Then Begin + if Assigned(ANode) and + Assigned(ANode.Attributes) and + ( ANode.Attributes.Length > 0 ) + then begin c := Pred(ANode.Attributes.Length); For i := 0 To c Do Begin If AnsiSameText(AAttValue,ANode.Attributes.Item[i].NodeValue) Then Begin @@ -548,7 +551,7 @@ begin Exit; End; End; - End; + end; Result := False; end; diff --git a/wst/trunk/binary_streamer.pas b/wst/trunk/binary_streamer.pas index aa718ba36..ea28923a3 100644 --- a/wst/trunk/binary_streamer.pas +++ b/wst/trunk/binary_streamer.pas @@ -11,6 +11,7 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. } {$INCLUDE wst_global.inc} +{$RANGECHECKS OFF} unit binary_streamer; interface diff --git a/wst/trunk/tests/test_suite/wst_test_suite.lpi b/wst/trunk/tests/test_suite/wst_test_suite.lpi index 240830147..305289586 100644 --- a/wst/trunk/tests/test_suite/wst_test_suite.lpi +++ b/wst/trunk/tests/test_suite/wst_test_suite.lpi @@ -7,7 +7,7 @@ - + @@ -42,7 +42,7 @@ - + @@ -74,8 +74,8 @@ - - + + @@ -88,8 +88,8 @@ - - + + @@ -106,12 +106,14 @@ - + + - + + @@ -135,7 +137,7 @@ - + @@ -165,7 +167,7 @@ - + @@ -186,9 +188,9 @@ - + - + @@ -279,7 +281,7 @@ - + @@ -319,7 +321,7 @@ - + @@ -392,8 +394,8 @@ - - + + @@ -441,7 +443,7 @@ - + @@ -461,9 +463,9 @@ - - - + + + @@ -471,8 +473,8 @@ - - + + @@ -480,8 +482,8 @@ - - + + @@ -495,157 +497,51 @@ - - - - + + - - - - - + - + - - + + - - + + - - + + - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -