[Progress Communities] [Progress OpenEdge ABL] Forum Post: RE: Implicitly created TTs not deleted when returning with an error

  • Thread starter Thread starter jbijker
  • Start date Start date
Status
Not open for further replies.
J

jbijker

Guest
It makes no difference if you return the error from the FINALLY block or from the procedure itself. DEFINE TEMP-TABLE ttTest NO-UNDO FIELD cValue AS CHARACTER. DEFINE VARIABLE hTable AS HANDLE NO-UNDO. ASSIGN hTable = TEMP-TABLE ttTest:HANDLE. MESSAGE "initial hTable:" hTable hTable:DEFAULT-BUFFER-HANDLE. RUN doTableLogic(INPUT-OUTPUT TABLE-HANDLE hTable, INPUT TRUE) NO-ERROR. IF ERROR-STATUS:ERROR THEN MESSAGE "doTableLogic error:" RETURN-VALUE. RUN scanleaks(INPUT SESSION:FIRST-BUFFER). PROCEDURE doTableLogic: DEFINE INPUT-OUTPUT PARAMETER TABLE-HANDLE iphTTBuffer. DEFINE INPUT PARAMETER iplReturnError AS LOGICAL NO-UNDO. MESSAGE "iphTTBuffer:" iphTTBuffer. IF iplReturnError THEN RETURN ERROR "sorry". FINALLY: /* delete the implicit created TT */ IF VALID-HANDLE(iphTTBuffer) THEN DELETE OBJECT iphTTBuffer. END FINALLY. END. PROCEDURE scanLeaks: DEFINE INPUT PARAMETER iphHandle AS HANDLE NO-UNDO. IF VALID-HANDLE(iphHandle) THEN DO: MESSAGE "Handle Leak" iphHandle iphHandle:TABLE-HANDLE iphHandle:NAME. /* recurse to find all */ RUN scanLeaks(INPUT iphHandle:NEXT-SIBLING). /* clean up */ DELETE OBJECT iphHandle:TABLE-HANDLE. END. END.

Continue reading...
 
Status
Not open for further replies.
Back
Top