HaxeFoundation / HaxeFoundation/haxe
[hxcpp] failing test if analyzer is disabled
- Dominant language
- Haxe
- Stars
- 6.9k
- Forks
- 715
- Avg merge
- 2d 2h
- Merged PRs (30d)
- 11
Description
This segfaults if no `-D analyzer-optimize` is used:
```haxe
import cpp.Callable;
import cpp.Object;
import haxe.io.Bytes;
class Main {
static function main() {
var callable = new CallableObject>(cffi_decompress);
var bytes = Bytes.alloc (100);
var data:Dynamic = callable.call (bytes);
trace(data);
}
static function cffi_decompress(a:Dynamic):Dynamic {
return null;
}
}
```
Generated code:
```c++
void Main_obj::main(){
HX_STACKFRAME(&_hx_pos_e47a9afac0942eb9_6_main)
HXLINE( 7) ::cpp::Function< ::hx::Object * ( ::hx::Object *) > this1 = ::Main_obj::cffi_decompress_dyn();
HXDLIN( 7) ::cpp::Function< ::hx::Object * ( ::hx::Object *) > callable = this1;
HXLINE( 8) ::haxe::io::Bytes bytes = ::haxe::io::Bytes_obj::alloc(100);
HXLINE( 9) ::Dynamic data = ( ( ::Dynamic)(callable(hx::DynamicPtr(bytes))) );
HXLINE( 10) ::haxe::Log_obj::trace(data,hx::SourceInfo(HX_("source/Main.hx",91,d3,a7,40),10,HX_("Main",59,64,2f,33),HX_("main",39,38,56,48)));
}
```
My investigation so far:
```
It ends up calling this: https://github.com/HaxeFoundation/hxcpp/blob/master/include/cpp/Pointer.h#L424
And this ends up calling `Object::__GetHandle`
Which is `virtual void *__GetHandle() const { return 0; }`
So that explains where the 0 comes from
```
Any advice?
Contributor guide
Assessment
This issue has not been assessed yet.