Mon, 16 Jan 2012 04:21:17 +0000
event_callback.c: Check for event being destroyed during callback
25
5778073d2903
Added timertest. Prevented GC-ed events from causing an abort.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
1 | require("luaevent.core") |
5778073d2903
Added timertest. Prevented GC-ed events from causing an abort.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
2 | |
5778073d2903
Added timertest. Prevented GC-ed events from causing an abort.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
3 | c = luaevent.core.new() |
5778073d2903
Added timertest. Prevented GC-ed events from causing an abort.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
4 | local f = 100 |
5778073d2903
Added timertest. Prevented GC-ed events from causing an abort.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
5 | local function createEvent() |
5778073d2903
Added timertest. Prevented GC-ed events from causing an abort.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
6 | return c:addevent(nil, luaevent.core.EV_TIMEOUT, function(ev) io.write(".." .. f) f = f - 1 if f < 0 then return -1 end collectgarbage() end, 0.01) |
5778073d2903
Added timertest. Prevented GC-ed events from causing an abort.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
7 | end |
5778073d2903
Added timertest. Prevented GC-ed events from causing an abort.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
8 | ev = createEvent() |
5778073d2903
Added timertest. Prevented GC-ed events from causing an abort.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
9 | print("TESTING Garbage-collect-safe version") |
5778073d2903
Added timertest. Prevented GC-ed events from causing an abort.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
10 | c:loop() |
5778073d2903
Added timertest. Prevented GC-ed events from causing an abort.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
11 | assert(f < 0, "DID NOT FINISH LOOPING") |
5778073d2903
Added timertest. Prevented GC-ed events from causing an abort.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
12 | io.write("\n") |
5778073d2903
Added timertest. Prevented GC-ed events from causing an abort.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
13 | print("TESTING Garbage-collect unsafe version") |
5778073d2903
Added timertest. Prevented GC-ed events from causing an abort.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
14 | f = 100 |
5778073d2903
Added timertest. Prevented GC-ed events from causing an abort.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
15 | createEvent() |
5778073d2903
Added timertest. Prevented GC-ed events from causing an abort.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
16 | c:loop() |
5778073d2903
Added timertest. Prevented GC-ed events from causing an abort.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
17 | assert(f >= 0, "Did not perform expected collection") |
5778073d2903
Added timertest. Prevented GC-ed events from causing an abort.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
18 | io.write("\n") |
5778073d2903
Added timertest. Prevented GC-ed events from causing an abort.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
19 | print("Completed both tests") |