35 lines
555 B
OpenEdge ABL
35 lines
555 B
OpenEdge ABL
|
#
|
||
|
(*$U+ -- enables underscores in identifiers *)
|
||
|
|
||
|
program markrelease;
|
||
|
|
||
|
type
|
||
|
iptr = ^integer;
|
||
|
|
||
|
var
|
||
|
ptr1 : iptr;
|
||
|
ptr2 : iptr;
|
||
|
|
||
|
procedure finished;
|
||
|
extern;
|
||
|
|
||
|
procedure fail(line: integer);
|
||
|
extern;
|
||
|
|
||
|
#define ASSERT(cond) \
|
||
|
if (not (cond)) then fail(__LINE__)
|
||
|
|
||
|
begin
|
||
|
New(ptr1);
|
||
|
New(ptr2);
|
||
|
ASSERT(ptr1 <> ptr2);
|
||
|
|
||
|
Dispose(ptr1);
|
||
|
Dispose(ptr2);
|
||
|
(* Not required by the Pascal standard, but our implementation sets the
|
||
|
* pointers to NULL after freeing them. *)
|
||
|
ASSERT(ptr1 = ptr2);
|
||
|
|
||
|
finished
|
||
|
end.
|