Re: avoiding crashes when trying to call a c++ callback from octave

"John W. Eaton" <[email protected]> Thu, 8 Feb 2024 14:45:50 -0500
Newsgroups gmane.comp.gnu.octave.general
Message-ID <[email protected]>
V2UgaGF2ZSBtb3ZlZCB0byBhIHdlYiBiYXNlZCBmb3J1bSBmb3IgY29tbXVuaXR5IGhlbHAgZGlz
Y3Vzc2lvbnMgYXQgCmh0dHBzOi8vb2N0YXZlLmRpc2NvdXJzZS5ncm91cC9jL2hlbHAKClBsZWFz
ZSB1c2UgdGhhdCB3ZWIgZm9ybSBhcyBhbGwgZGlzY3Vzc2lvbiBoYXBwZW4gdGhlcmUgbm93LgoK
andlCgoKCk9uIDIvOC8yNCAwNzoxNywgR3VpZG9SYW1vbiB3cm90ZToKPiBIZWxsbyBldmVyeW9u
ZSwKPiAKPiBJIGhhdmUgYW4gaXNzdWUgd2l0aCBkaXNwYXRjaGluZyBjbGFzc2VzIGluIEdOVSBP
Y3RhdmUgOC40IG9uIFdpbmRvd3MgCj4gMTAuIEkgaW5zdGFsbGVkIGl0IHZpYSB0aGUgeDY0IGV4
ZSBpbnN0YWxsZXIuCj4gCj4gSSBhbSB0cnlpbmcgdG8gY2FsbCBhIGMrKyBmdW5jdGlvbiBpbiBH
TlUgb2N0YXZlLCBzbyBJIHVzZSBhIGRpc3BhdGNoZXIgCj4gKi5jYyBmaWxlIGFzIGZvbGxvd3Ms
IHdoaWNoIEkgdGhlbiBzdWNjZXNzZnVsbHkgY29tcGlsZSBpbnRvIGFuIG9jdC1maWxlOgo+IAo+
IG1rb2N0ZmlsZSBteV9kaXNwYXRjaGVyX2Z1bmN0aW9uLmNjIC1jCj4gbWtvY3RmaWxlIG15X2Rp
c3BhdGNoZXJfZnVuY3Rpb24ubyBteV9jcHBfY2xhc3NfcGltcGwubyAtbHF1YWRtYXRoCj4gCj4g
I2luY2x1ZGU8b2N0YXZlL29jdC5oPgo+ICNpbmNsdWRlPG9jdGF2ZS9kTkRBcnJheS5oPgo+IAo+
IC8qIGJvZHkgYW5kIGlubGluZS1tZW1iZXJzIG9mIE15X2NwcF9jbGFzcyAqLwo+IAo+IERFRlVO
X0RMRChteV9kaXNwYXRjaGVyX2Z1bmN0aW9uLCBhcmdzLCBuYXJnb3V0LCAKPiAiRGVidWdnaW5n
X215X2Rpc3BhdGNoZXJfZnVuY3Rpb25fc3VpdGFibGVfbmFtZSIpewo+ICDCoCDCoCAvLwo+ICDC
oCDCoCAvLyBmbGFnID0gTXlfY3BwX2NsYXNzLm15X2NwcF9mdW5jdGlvbigpOwo+ICDCoCDCoCAv
Lwo+ICDCoCDCoCAvLyArKysrIHBvc3Nlc3MgYW4gaW5zdGFuY2UKPiAgwqAgwqAgc3RhdGljIE15
X2NwcF9jbGFzcyBteV9jbGFzc19pbnN0YW5jZTsgLy8gSSBhbHNvIHRyaWVkIHdpdGhvdXQgCj4g
InN0YXRpYyIsIGkuZS4gcmUtaW5zdGFudGlhdGluZyBhdCBlYWNoIGNhbGwuIFNhbWUgYmVoYXZp
b3VyIChpLmUuIAo+IG9jdGF2ZSBjbG9zZXMpLgo+ICDCoCDCoCAvLwo+ICDCoCDCoCAvLyArKysr
IGFjcXVpcmUgYXJyYXlzCj4gIMKgIMKgIE5EQXJyYXkgYXJyYXlfeCA9IGFyZ3MoMCkuYXJyYXlf
dmFsdWUoKTsKPiAgwqAgwqAgTkRBcnJheSBhcnJheV95ID0gYXJncygxKS5hcnJheV92YWx1ZSgp
Owo+ICDCoMKgwqAgLy8KPiAgwqDCoMKgIC8vICsrKysgbG9hZCBpbnB1dHMgaW50byBjbGFzcwo+
ICDCoMKgwqAgZm9yKGludCBpPTA7aTwxMDsrK2kpeyBteV9jbGFzc19pbnN0YW5jZS54W2ldID0g
YXJyYXlfeChpKTsgfQo+ICDCoMKgwqAgLy8KPiAgwqDCoMKgIC8vICsrKysgY29tcHV0ZQo+ICDC
oMKgwqAgbXlfY2xhc3NfaW5zdGFuY2UuY29tcHV0ZSgpOwo+ICDCoMKgwqAgLy8KPiAgwqDCoMKg
IC8vICsrKysgZXhwb3J0IG91dHB1dHMKPiAgwqDCoMKgIGZvcihpbnQgaT0wO2k8MjA7KytpKXsg
YXJyYXlfeShpKSA9IG15X2NsYXNzX2luc3RhbmNlLnlbaV07IH0KPiAgwqDCoMKgIC8vCj4gIMKg
wqDCoCAvLyArKysrIHBhY2sgYW5kIHJldHVybiByZXN1bHQKPiAgwqAgwqAgb2N0YXZlX3ZhbHVl
X2xpc3QgcmV0dmFsOwo+ICDCoCDCoCAvLwo+ICDCoCDCoCByZXR2YWwuYXBwZW5kKCBvY3RhdmVf
dmFsdWUoYXJyYXlfeSApICk7Cj4gIMKgwqDCoCByZXR1cm4gcmV0dmFsOwo+IH0KPiAKPiBUaGUg
T2N0YXZlIGNvZGUsIHdoaWNoIGNhbGxzIHRoZSBvY3QgZmlsZSwgaXM6Cj4gCj4gYXNzZXJ0KCBz
aXplKHgpPT1bMTAsMV0gJiYgc2l6ZSh4KT09WzIwLDFdICk7ICUgdGhpcyBwYXNzZXMgc3VjY2Vz
c2Z1bGx5Cj4geSA9IG15X2Rpc3BhdGNoZXJfZnVuY3Rpb24oeCx5KTsKPiAKPiBUaGUgY29uc3Ry
dWN0b3Igb2YgTXlfY3BwX2NsYXNzIHJlbGllcyBvbiBhIHNpbmdsZXRvbiwgd2hpY2ggaGFzIGJl
ZW4gCj4gaW1wbGVtZW50ZWQgd2l0aCBhIG5vbi1tZW1iZXIgZnVuY3Rpb24gdGhhdCByZXR1cm5z
IGEgc3RhdGljIGluc3RhbmNlIG9mIAo+IHRoZSBTaW5nbGV0b24uCj4gCj4gRXZlcnl0aW1lIEkg
Y2FsbCB0aGUgZGlzcGF0Y2hlciBmcm9tIE9jdGF2ZSBHVUksIE9jdGF2ZSBpbW1lZGlhdGVseSAK
PiBjbG9zZXMgYWxsIHdpbmRvd3Mgb2YgdGhlIHNvZnR3YXJlIGFuZCBlbmRzLiAoTWF5YmUgYSBz
dWJncm91cCBvZiB1cyBjYW4gCj4gYWdyZWUgdGhhdCBlaXRoZXIgbXkgY2xhc3MgbGVha3Mgb3Ig
T2N0YXZlIGVuY291bnRlcnMgYSBidWcuIEkgaGF2ZSAKPiBkZWJ1Z2dlZCBteSBjbGFzcy4gSSB3
b3VsZCBhcHByZWNpYXRlIGF2b2lkaW5nIGEgZGlzY3Vzc2lvbiBpbnRvIHRoYXQgYXJlYS4pCj4g
Cj4gSSBkbyBub3Qga25vdyBvciB3YW50IHRvIGtub3cgb3IgZGlzY3VzcyB3aGV0aGVyIHRoaXMg
aXMgYSBidWcuCj4gCj4gSSBhbSBpbnRlcmVzdGVkIGluIGFjcXVpcmluZyBhIG1lYW5zIHRvIGRv
aW5nIHdoYXQgdGhlIGFib3ZlIGNvZGUgd291bGQgCj4gYmUgZXhwZWN0ZWQgdG8gZG8gdW5kZXIg
cmVhc29uYWJsZSBuYWl2ZSBhc3N1bXB0aW9ucyAod2hpY2ggYXJlOiBJIGhhdmUgCj4gYSBjbGFz
cy4gSSBjYW4gY29uc3RydWN0IGFuZCBkZXN0cnVjdCBpbnN0YW5jZXMgb2YgaXQgaW4gYysrIG11
bHRpcGxlIAo+IHRpbWVzIHdpdGhvdXQgbWVtb3J5IGxlYWtzLiBFYWNoIGluc3RhbmNlIGhhcyBi
dWZmZXJzIHgseSBhbmQgYSBtZW1iZXIgCj4gZnVuY3Rpb24gY29tcHV0ZSB0aGF0IG1hbmlwdWxh
dGVzIHkuIEkgd2FudCB0byBvYnRhaW4geSBpbiBPY3RhdmUgZnJvbSAKPiBnaXZlbiB4IGluIE9j
dGF2ZSkuCj4gCj4gQ3VycmVudGx5LCBteSB3b3JrLWFyb3VuZCBpcyB0byB3cml0ZSBhIHRleHQg
ZmlsZSBpbiBvY3RhdmUsIHRoZW4gbWFrZSBhIAo+IHN5c3RlbSBjYWxsIGZyb20gb2N0YXZlIHRv
IG15IGNwcCBleGUsIHRoaXMgbWFuaXB1bGF0ZXMgdGhlIHRleHRmaWxlLCAKPiBhbmQgb2N0YXZl
IHJlYWRzIHRoZSByZXN1bHRzLiBUaGUgaXNzdWUgaXMgd2l0aCBzcGVlZCBvZiBleGVjdXRpb24s
IAo+IHNpbmNlIHRoZSB3cml0ZSB0byBoYXJkZHJpdmUgaW50cm9kdWNlcyBlbm91cm1vdXMgbGF0
ZW5jeSwgcGFydGljdWxhcmx5IAo+IHNpbmNlIEkgbmVlZCB+MTAwMDAgZXZhbGF0aW9ucyBwZXIg
dXNlIGNhc2UuCj4gCj4gVGhhbmsgeW91IGZvciBhbnkgaGVscC4KPiAKPiBLaW5kIHJlZ2FyZHMs
Cj4gR3VpZG8KCgoKLS0tLS0tLS0tLQpXZSBhcmUgdHJhbnNpdGlvbmluZyB0byBhIHdlYiBiYXNl
ZCBmb3J1bQpmb3IgY29tbXVuaXR5IGhlbHAgZGlzY3Vzc2lvbnMgYXQKaHR0cHM6Ly9vY3RhdmUu
ZGlzY291cnNlLmdyb3VwL2MvaGVscAo=