More Changes for PR #31

This commit is contained in:
Moritz Maxeiner 2015-12-24 12:16:37 +01:00
parent cfb05fae25
commit de7d2f02f6
2 changed files with 9 additions and 4 deletions

View File

@ -55,6 +55,9 @@ DOS_API void dos_qqmlcontext_setcontextproperty(void* vptr, const char* name, vo
// CharArray // CharArray
DOS_API void dos_chararray_delete(char* ptr); DOS_API void dos_chararray_delete(char* ptr);
// QObjectPtrArray
DOS_API void dos_qobjectptr_array_delete(void** ptr);
// QVariant // QVariant
DOS_API void dos_qvariant_create(void** vptr); DOS_API void dos_qvariant_create(void** vptr);
DOS_API void dos_qvariant_create_int(void** vptr, int value); DOS_API void dos_qvariant_create_int(void** vptr, int value);

View File

@ -110,10 +110,7 @@ void dos_qqmlapplicationengine_rootObjects(void* vptr, void*** array, int* array
{ {
QQmlApplicationEngine* engine = reinterpret_cast<QQmlApplicationEngine*>(vptr); QQmlApplicationEngine* engine = reinterpret_cast<QQmlApplicationEngine*>(vptr);
QList<QObject*> list = engine->rootObjects(); QList<QObject*> list = engine->rootObjects();
// Note: On fringe architectures where `8 < CHAR_BIT` this may not allocate enough memory, auto objects = new QObject*[list.size()];
// as sizeof returns the number of chars required, while calloc/malloc expects
// the number of octets required.
QObject** objects = reinterpret_cast<QObject**>(calloc(list.length(), sizeof(QObject*)));
if (objects == nullptr) return; if (objects == nullptr) return;
for (int i = 0; i < list.length(); i += 1) objects[i] = list.at(i); for (int i = 0; i < list.length(); i += 1) objects[i] = list.at(i);
*array = reinterpret_cast<void**>(objects); *array = reinterpret_cast<void**>(objects);
@ -180,6 +177,11 @@ void dos_chararray_delete(char* ptr)
if (ptr) delete[] ptr; if (ptr) delete[] ptr;
} }
void dos_qobjectptr_array_delete(void** ptr)
{
if (ptr) delete[] ptr;
}
void dos_qqmlcontext_baseUrl(void* vptr, char** result) void dos_qqmlcontext_baseUrl(void* vptr, char** result)
{ {
QQmlContext* context = reinterpret_cast<QQmlContext*>(vptr); QQmlContext* context = reinterpret_cast<QQmlContext*>(vptr);