Kbase P97785: Application hangs scrolling a browser using the cursor keys.
Autor |
  Progress Software Corporation - Progress |
Acesso |
  Público |
Publicação |
  04/03/2011 |
|
Status: Unverified
SYMPTOM(s):
Application hangs scrolling a browser using the cursor keys.
Browser has a ROW-DISPLAY trigger.
During the ROW-DISPLAY trigger, the FORMAT for some browser columns is changed.
New FORMAT string is larger than old FORMAT string; for example, old FORMAT string is "yes
o" and new FORMAT string is " yes/ no".
Application does not hang on the ROW-DISPLAY trigger, but some time after the ROW-DISPLAY trigger has changed the FORMAT.
FORMAT is NOT changed in the ROW-DISPLAY trigger using then syntax 'table.field:FORMAT IN BROWSE browseName = myFormatString
FORMAT is changed in the ROW-DISPLAY trigger using the syntax 'handleVariable:FORMAT = myFormatString', where handleVariable points to a browse column.
Changing FORMAT mask of a BROWSE bigger than default format mask
prowin32.exe 100% CPU and application hangs
FACT(s) (Environment):
Progress 9.1D
Progress 9.1E
CAUSE:
Bug# OE00122960
CAUSE:
Progress fails to allocate a larger memory portion to host the new, larger FORMAT, thus some memory is overwritten in the process. The actual behavior that ensues is therefore mostly random, although it has been noticed mostly that Progress will hang.
FIX:
Upgrade to OpenEdge 10.1B or later
One possible workaround is to define the static FORMAT of each browser column to host the longest string, and then change the FORMAT dynamically so that the new FORMAT is actually shorter. Something like:
...
DEFINE BROWSE br QUERY q
DISPLAY myTT.LogicalField FORMAT " yes/ no"
WITH ...
...
ASSIGN hColHandle = myTT.LogicalField:HANDLE IN BROWSE br.
...
ON ROW-DISPLAY OF myTT.LogicalField DO:
ASSIGN hColHandle:FORMAT = "yes
o".
END.