2011-10-28 01:26 UTC+0200 Viktor Szakats (harbour.01 syenar.hu)

* src/rtl/tget.prg
    ! fixed RTE when setting :picture to NIL for
      N and C types in some certain rare circumstantances.
      The :picture setting operation is ignored in such case, 
      since the internally stored original value is not known.
      Tested OK against CA-Cl*pper 5.3, though maybe it's 
      possible to refine this even further with more test cases.

  * tests/rto_get.prg
    + added test case for RTE reported by Quique
    ! fixed warnings
This commit is contained in:
Viktor Szakats
2011-10-27 23:30:35 +00:00
parent 69e5d3a0fc
commit 0a4bccada8
3 changed files with 61 additions and 26 deletions

View File

@@ -16,6 +16,19 @@
The license applies to all entries newer than 2009-04-28.
*/
2011-10-28 01:26 UTC+0200 Viktor Szakats (harbour.01 syenar.hu)
* src/rtl/tget.prg
! fixed RTE when setting :picture to NIL for
N and C types in some certain rare circumstantances.
The :picture setting operation is ignored in such case,
since the internally stored original value is not known.
Tested OK against CA-Cl*pper 5.3, though maybe it's
possible to refine this even further with more test cases.
* tests/rto_get.prg
+ added test case for RTE reported by Quique
! fixed warnings
2011-10-27 19:12 UTC+0200 Viktor Szakats (harbour.01 syenar.hu)
* contrib/hbziparc/ziparc.prg
! HB_ZIPFILE(): one fix to filename matching
@@ -49,7 +62,7 @@
2011-10-24 13:34 UTC+0200 Viktor Szakats (harbour.01 syenar.hu)
* src/rtl/gtwin/gtwin.c
! Missing break clause causing following code also changes
! Missing break clause causing following code also changes
console window title.
hb_gtInfo( HB_GTI_BOXCP, hb_cdpSelect() )
Patch by Aleksander Czajczynski

View File

@@ -1108,20 +1108,24 @@ METHOD picture( cPicture ) CLASS GET
CASE "N"
cNum := Str( ::xVarGet )
IF ( nAt := At( ".", cNum ) ) > 0
::cPicMask := Replicate( "9", nAt - 1 ) + "."
::cPicMask += Replicate( "9", Len( cNum ) - Len( ::cPicMask ) )
ELSE
::cPicMask := Replicate( "9", Len( cNum ) )
IF ::xVarGet != NIL
cNum := Str( ::xVarGet )
IF ( nAt := At( ".", cNum ) ) > 0
::cPicMask := Replicate( "9", nAt - 1 ) + "."
::cPicMask += Replicate( "9", Len( cNum ) - Len( ::cPicMask ) )
ELSE
::cPicMask := Replicate( "9", Len( cNum ) )
ENDIF
ENDIF
EXIT
CASE "C"
IF ::cPicFunc == "@9"
::cPicMask := Replicate( "9", Len( ::xVarGet ) )
::cPicFunc := ""
IF ::xVarGet != NIL
IF ::cPicFunc == "@9"
::cPicMask := Replicate( "9", Len( ::xVarGet ) )
::cPicFunc := ""
ENDIF
ENDIF
EXIT

View File

@@ -81,9 +81,9 @@ FUNCTION Main( cArg01, cArg02, cArg03, cArg04 )
LOCAL cStr05 := ""
LOCAL cStr06 := ""
LOCAL cStr07 := ""
#ifdef NULL
//#ifdef NULL
LOCAL dDate01
#endif
//#endif
LOCAL bOldBlock
LOCAL o
@@ -396,6 +396,24 @@ FUNCTION Main( cArg01, cArg02, cArg03, cArg04 )
TEST_LINE( o:reset() )
TEST_LINE( o:killFocus() )
// ; Quique
nInt02 := 198.12
SetPos( 14, 16 ) ; o := _GET_( nInt02, "nInt02",,, )
TEST_LINE( o:display() )
TEST_LINE( o:killFocus() )
TEST_LINE( o:picture := NIL )
TEST_LINE( o:setFocus() )
TEST_LINE( o:display() )
nInt02 := 198.12
SetPos( 14, 16 ) ; o := _GET_( nInt02, "nInt02", "999.999",, )
TEST_LINE( o:display() )
TEST_LINE( o:killFocus() )
TEST_LINE( o:picture := NIL )
TEST_LINE( o:setFocus() )
TEST_LINE( o:display() )
// ; Buffer
s_xVar := "abcdefg"
@@ -722,26 +740,26 @@ PROCEDURE TGetTOVS( o, aKeys, lInsert )
ELSEIF ISNUM( aKeys[ tmp ] )
DO CASE
CASE aKeys[ tmp ] == K_INS ; lInsert := ! lInsert
CASE aKeys[ tmp ] == K_HOME ; TEST_LINE( oGet:Home() )
CASE aKeys[ tmp ] == K_END ; TEST_LINE( oGet:End() )
CASE aKeys[ tmp ] == K_RIGHT ; TEST_LINE( oGet:Right() )
CASE aKeys[ tmp ] == K_LEFT ; TEST_LINE( oGet:Left() )
CASE aKeys[ tmp ] == K_CTRL_RIGHT ; TEST_LINE( oGet:WordRight() )
CASE aKeys[ tmp ] == K_CTRL_LEFT ; TEST_LINE( oGet:WordLeft() )
CASE aKeys[ tmp ] == K_BS ; TEST_LINE( oGet:BackSpace() )
CASE aKeys[ tmp ] == K_DEL ; TEST_LINE( oGet:Delete() )
CASE aKeys[ tmp ] == K_CTRL_T ; TEST_LINE( oGet:DelWordRight() )
CASE aKeys[ tmp ] == K_CTRL_Y ; TEST_LINE( oGet:DelEnd() )
CASE aKeys[ tmp ] == K_CTRL_BS ; TEST_LINE( oGet:DelWordLeft() )
CASE aKeys[ tmp ] == K_CTRL_U ; TEST_LINE( oGet:Undo() )
CASE o:type == "N" .AND. Chr( aKeys[ tmp ] ) $ ".," ; TEST_LINE( oGet:ToDecPos() )
CASE aKeys[ tmp ] == K_HOME ; TEST_LINE( o:Home() )
CASE aKeys[ tmp ] == K_END ; TEST_LINE( o:End() )
CASE aKeys[ tmp ] == K_RIGHT ; TEST_LINE( o:Right() )
CASE aKeys[ tmp ] == K_LEFT ; TEST_LINE( o:Left() )
CASE aKeys[ tmp ] == K_CTRL_RIGHT ; TEST_LINE( o:WordRight() )
CASE aKeys[ tmp ] == K_CTRL_LEFT ; TEST_LINE( o:WordLeft() )
CASE aKeys[ tmp ] == K_BS ; TEST_LINE( o:BackSpace() )
CASE aKeys[ tmp ] == K_DEL ; TEST_LINE( o:Delete() )
CASE aKeys[ tmp ] == K_CTRL_T ; TEST_LINE( o:DelWordRight() )
CASE aKeys[ tmp ] == K_CTRL_Y ; TEST_LINE( o:DelEnd() )
CASE aKeys[ tmp ] == K_CTRL_BS ; TEST_LINE( o:DelWordLeft() )
CASE aKeys[ tmp ] == K_CTRL_U ; TEST_LINE( o:Undo() )
CASE o:type == "N" .AND. Chr( aKeys[ tmp ] ) $ ".," ; TEST_LINE( o:ToDecPos() )
ENDCASE
ENDIF
NEXT
RETURN
PROCEDURE TGetTIns( o, aKeys )
FUNCTION TGetTIns( o, aKeys )
RETURN TGetTOVS( o, aKeys, .T. )
PROCEDURE TGetAssign( xVar )