diff options
Diffstat (limited to 'src/lj_cconv.c')
-rw-r--r-- | src/lj_cconv.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/src/lj_cconv.c b/src/lj_cconv.c index 884edef1..d73984f4 100644 --- a/src/lj_cconv.c +++ b/src/lj_cconv.c | |||
@@ -12,6 +12,7 @@ | |||
12 | #include "lj_ctype.h" | 12 | #include "lj_ctype.h" |
13 | #include "lj_cdata.h" | 13 | #include "lj_cdata.h" |
14 | #include "lj_cconv.h" | 14 | #include "lj_cconv.h" |
15 | #include "lj_ccallback.h" | ||
15 | 16 | ||
16 | /* -- Conversion errors --------------------------------------------------- */ | 17 | /* -- Conversion errors --------------------------------------------------- */ |
17 | 18 | ||
@@ -603,6 +604,13 @@ void lj_cconv_ct_tv(CTState *cts, CType *d, | |||
603 | tmpptr = uddata(udataV(o)); | 604 | tmpptr = uddata(udataV(o)); |
604 | } else if (tvislightud(o)) { | 605 | } else if (tvislightud(o)) { |
605 | tmpptr = lightudV(o); | 606 | tmpptr = lightudV(o); |
607 | } else if (tvisfunc(o)) { | ||
608 | void *p = lj_ccallback_new(cts, d, funcV(o)); | ||
609 | if (p) { | ||
610 | *(void **)dp = p; | ||
611 | return; | ||
612 | } | ||
613 | goto err_conv; | ||
606 | } else { | 614 | } else { |
607 | err_conv: | 615 | err_conv: |
608 | cconv_err_convtv(cts, d, o, flags); | 616 | cconv_err_convtv(cts, d, o, flags); |