SIGSEGV: при возврате строки из NativeFunctor
От: citrusn Россия  
Дата: 20.09.19 05:58
Оценка:
Андрей, добрый день! Хочу использовать Sciter в Nim.
proc setNativeFunctor*(v: var Value, nf: NativeFunctor) = 
    nfs.add(nf)
    var tag = cast[pointer](nfs.len()-1)
    assert ValueNativeFunctorSet(v.unsafeAddr, pinvoke, prelease, tag) == HV_OK

Здесь убрал все лишнее
proc pinvoke(tag: pointer;
            argc: uint32; 
            argv: ptr Value;
            retval: ptr Value) {.stdcall.} =
    var s = "All good!"
    var res = newValue(s) # так не работает
    #var res = newValue(99955) # c таким значением ошибок нет
    #res.convertToString()
    ValueInit(retval)
    var ws = newWideCString(s)    
    assert ValueFromString(retval, ws, ws.len.uint32, 0) == HV_OK  # такой вариант тоже не проходит
    #ValueCopy(retval, res.addr) # работает только, если res содержит числа


Падает где то в sciter.dll:
d:\Project\nsciter\handlers.nim(154) handlers
d:\Project\nsciter\sciter\sciter.nim(70) run
SIGSEGV: Illegal storage access. (Attempt to read from nil?)
Error: execution of an external program failed: 'd:\Project\nsciter\handlers.exe '
Может есть какие идеи? Свои уже закончились...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.