c084f9f224
standard library, because they never worked and come from an achingly old version of the Pascal specification. Fix the implementations of New() and Dispose() to use the standard C memory allocator rather than rolling their own (also in C). Write test!
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.
|