Bug na função ACHOICE() Harbour 2.1.0 beta2 Rev. 15462

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

jamazevedo
Usuário Nível 3
Usuário Nível 3
Mensagens: 122
Registrado em: 29 Dez 2005 16:50
Localização: Manaus - AM

Bug na função ACHOICE() Harbour 2.1.0 beta2 Rev. 15462

Mensagem por jamazevedo »

Olá Amigos. Boa tarde!

Utilizo a função ACHOICE() para montagem de um menu dinâmico, fiz a migração de xHarbour para Harbour e aparece o seguinte erro quando deleto (apago) o último ou penúltimo elemento do array:
Bound error: array access

Bisbilhotando no fonte achoice.prg consegui identificar a linha (520) em que ocorre o erro:

Código: Selecionar todos

...
         IF ISNUMBER( nUserFunc )
            DO CASE
            CASE nUserFunc == AC_ABORT .OR. nMode == AC_NOITEM
               IF nPos != 0
///// o erro eh na linha abaixo
                  DispLine( acItems[ nPos ], nTop + ( nPos - nAtTop ), nLeft, .T., .F., nNumCols )
               ENDIF
               lFinished := .T.
               nPos      := 0
...
Resolvi da seguinte forma:

Código: Selecionar todos

...
         IF ISNUMBER( nUserFunc )
            DO CASE
            CASE nUserFunc == AC_ABORT .OR. nMode == AC_NOITEM
///// alterei a linha abaixo
               IF nPos != 0 .AND. !EMPTY( LEN( acItems ) )
                  DispLine( acItems[ nPos ], nTop + ( nPos - nAtTop ), nLeft, .T., .F., nNumCols )
               ENDIF
               lFinished := .T.
               nPos      := 0
...
Sei que não é a forma correta de resolver fiz isso somente para não para o processo.
Alguém já passou por isso ?
Lembrando que no xHarbour o fonte achoice.prg é totalmente diferente do Harbour.
______________________________________________________
Usando: Linux Ubuntu 18.04, Harbour 3.2.0dev r1811161533
______________________________________________________
José Airton de Menezes Azevedo
Manaus - AM
Responder