Correção – Erro stack depth overflow no Application Server
Esta correção impede um erro fatal stack depth overflow causado pela chamada de um método de uma classe que herda LongNameClass indiretamente.
Abrangência | ERP 10 e 11 |
---|---|
Situação | Utilização de programas AdvPL, quando há herança indireta da classe “LongNameClass”. |
Ocorrência | Quando uma classe herda indiretamente LongNameClass (por exemplo, a classe B herda uma classe A que por sua vez herda LongNameClass) não é possível definir nomes de método e/ou nomes de propriedades com mais de 10 caracteres. Neste cenário, uma herança indireta em que um método da classe B chama outro método da classe A, onde os 10 primeiros caracteres dos nomes desses dois métodos são iguais, uma chamada recursiva ao método da classe B pode acontecer, abortando a execução da aplicação com uma ocorrência de erro fatal “stack depth overflow”. |
Correção | Em tempo de execução, é checado recursivamente se alguma classe herda LongNameClass, desta forma a chamada do método exemplificada na ocorrência é feita de forma correta, não causando a recursão. |
Informações adicionais | Uma herança indireta da classe LongNameClass não permite a declaração na mesma classe de dois métodos ou propriedades onde os 10 primeiros caracteres coincidam. Somente é possível esta implementação quando herdamos diretamente da classe LongNameClass. Este comportamento já existia antes desta correção, e foi mantido sem alterações. É importante ressaltar que, caso tenha escrito um programa AdvPL onde uma classe tenha herança indireta de LongNameClass e tenha definido um método com nome maior do que 10 caracteres, e realizado a chamada a estes método utilizando apenas os 10 primeiros caracteres do nome do método, a chamada era realizada com sucesso. A partir da build atual, nesta condição de herança, caso os métodos com nome longo não forem chamados com o nome completo, a aplicação AdvPl será finalizada com a ocorrência de erro “invalid method” . |
Visão Geral
Import HTML Content
Conteúdo das Ferramentas
Tarefas