CFFI string work

This commit is contained in:
Joshua Granick
2019-03-14 13:27:54 -07:00
parent 3b9ca3a770
commit 9803ca9bf6
11 changed files with 99 additions and 23 deletions

View File

@@ -721,8 +721,9 @@ namespace lime {
if (path) {
int size = std::wcslen (path->c_str ());
char* result = (char*)malloc (size);
char* result = (char*)malloc (size + 1);
std::wcstombs (result, path->c_str (), size);
result[size] = '\0';
delete path;
return (vbyte*)result;
@@ -790,8 +791,9 @@ namespace lime {
if (path) {
int size = std::wcslen (path->c_str ());
char* result = (char*)malloc (size);
char* result = (char*)malloc (size + 1);
std::wcstombs (result, path->c_str (), size);
result[size] = '\0';
delete path;
return (vbyte*)result;
@@ -863,8 +865,9 @@ namespace lime {
for (int i = 0; i < files.size (); i++) {
int size = std::wcslen (files[i]->c_str ());
char* _file = (char*)malloc (size);
char* _file = (char*)malloc (size + 1);
std::wcstombs (_file, files[i]->c_str (), size);
_file[size] = '\0';
*resultData++ = (vbyte*)_file;
delete files[i];
@@ -930,8 +933,9 @@ namespace lime {
if (path) {
int size = std::wcslen (path->c_str ());
char* result = (char*)malloc (size);
char* result = (char*)malloc (size + 1);
std::wcstombs (result, path->c_str (), size);
result[size] = '\0';
delete path;
return (vbyte*)result;

View File

@@ -2269,7 +2269,11 @@ namespace lime {
HL_PRIM vbyte* hl_lime_cairo_version_string () {
const char* version = cairo_version_string ();
return (vbyte*)version;
int length = strlen (version);
char* _version = (char*)malloc (length + 1);
strcpy (_version, version);
_version[length] = '\0';
return (vbyte*)_version;
}

View File

@@ -1835,10 +1835,11 @@ namespace lime {
GLint length;
glGetActiveUniformBlockiv (program, uniformBlockIndex, GL_UNIFORM_BLOCK_NAME_LENGTH, &length);
char* buffer = (char*)malloc (length);
char* buffer = (char*)malloc (length + 1);
glGetActiveUniformBlockName (program, uniformBlockIndex, length, 0, buffer);
buffer[length] = '\0';
return (vbyte*)buffer;
#else
return NULL;
@@ -2472,10 +2473,11 @@ namespace lime {
}
char* buffer = (char*)malloc (logSize);
char* buffer = (char*)malloc (logSize + 1);
glGetProgramInfoLog (program, logSize, 0, buffer);
buffer[logSize] = '\0';
return (vbyte*)buffer;
}
@@ -2740,10 +2742,11 @@ namespace lime {
}
char* buffer = (char*)malloc (logSize);
char* buffer = (char*)malloc (logSize + 1);
GLint writeSize;
glGetShaderInfoLog (shader, logSize, &writeSize, buffer);
buffer[logSize] = '\0';
return (vbyte*)buffer;
}
@@ -2867,8 +2870,9 @@ namespace lime {
}
char *result = new char[len + 1];
glGetShaderSource (shader, len + 1, 0, result);
glGetShaderSource (shader, len, 0, result);
result[len] = '\0';
return (vbyte*)result;
}
@@ -2898,8 +2902,9 @@ namespace lime {
if (val) {
int size = strlen (val);
char* result = (char*)malloc (size);
char* result = (char*)malloc (size + 1);
memcpy (result, val, size);
result[size] = '\0';
return (vbyte*)result;
} else {
@@ -2940,8 +2945,9 @@ namespace lime {
if (val) {
int size = strlen (val);
char* result = (char*)malloc (size);
char* result = (char*)malloc (size + 1);
memcpy (result, val, size);
result[size] = '\0';
return (vbyte*)result;
} else {

View File

@@ -2204,7 +2204,11 @@ namespace lime {
HL_PRIM vbyte* hl_lime_al_get_string (int param) {
const char* result = alGetString (param);
return (vbyte*)result;
int length = strlen (result);
char* _result = (char*)malloc (length + 1);
strcpy (_result, result);
_result[length] = '\0';
return (vbyte*)_result;
}
@@ -3382,7 +3386,11 @@ namespace lime {
ALCdevice* alcDevice = (ALCdevice*)device->ptr;
const char* result = alcGetString (alcDevice, param);
return (vbyte*)result;
int length = strlen (result);
char* _result = (char*)malloc (length + 1);
strcpy (_result, result);
_result[length] = '\0';
return (vbyte*)_result;
}

View File

@@ -2188,7 +2188,11 @@ namespace lime {
HL_PRIM vbyte* hl_lime_curl_easy_strerror (int errornum) {
const char* result = curl_easy_strerror ((CURLcode)errornum);
return (vbyte*)result;
int length = strlen (result);
char* _result = (char*)malloc (length + 1);
strcpy (_result, result);
_result[length] = '\0';
return (vbyte*)_result;
}
@@ -2204,7 +2208,11 @@ namespace lime {
HL_PRIM vbyte* hl_lime_curl_easy_unescape (HL_CFFIPointer* curl, hl_vstring* url, int inlength, int outlength) {
char* result = curl_easy_unescape ((CURL*)curl->ptr, url ? hl_to_utf8 (url->bytes) : NULL, inlength, &outlength);
return (vbyte*)result;
int length = strlen (result);
char* _result = (char*)malloc (length + 1);
strcpy (_result, result);
_result[length] = '\0';
return (vbyte*)_result;
}
@@ -2751,7 +2759,11 @@ namespace lime {
HL_PRIM vbyte* hl_lime_curl_version () {
char* result = curl_version ();
return (vbyte*)result;
int length = strlen (result);
char* _result = (char*)malloc (length + 1);
strcpy (_result, result);
_result[length] = '\0';
return (vbyte*)_result;
}

View File

@@ -722,7 +722,16 @@ namespace lime {
const char* result = hb_buffer_serialize_format_to_string ((hb_buffer_serialize_format_t)format);
if (result) return (vbyte*)result;
if (result) {
int length = strlen (result);
char* _result = (char*)malloc (length + 1);
strcpy (_result, result);
_result[length] = '\0';
return (vbyte*)_result;
}
return NULL;
}
@@ -1136,7 +1145,12 @@ namespace lime {
char* result = (char*)malloc (128);
hb_feature_to_string ((hb_feature_t*)feature->ptr, result, 128);
return (vbyte*)result;
int length = strlen (result);
char* _result = (char*)malloc (length + 1);
strcpy (_result, result);
_result[length] = '\0';
return (vbyte*)_result;
}
@@ -1401,7 +1415,12 @@ namespace lime {
char* result = (char*)malloc (1024);
hb_font_glyph_to_string ((hb_font_t*)font->ptr, (hb_codepoint_t)codepoint, result, 1024);
return (vbyte*)result;
int length = strlen (result);
char* _result = (char*)malloc (length + 1);
strcpy (_result, result);
_result[length] = '\0';
return (vbyte*)_result;
}
@@ -1585,7 +1604,12 @@ namespace lime {
hb_language_t _language = (hb_language_t)language->ptr;
const char* result = hb_language_to_string (_language);
return (vbyte*)result;
int length = strlen (result);
char* _result = (char*)malloc (length + 1);
strcpy (_result, result);
_result[length] = '\0';
return (vbyte*)_result;
}

View File

@@ -44,8 +44,10 @@ namespace lime {
DropEvent* eventObject = (DropEvent*)DropEvent::eventObject->Get ();
// TODO
// eventObject->file = event->file;
int length = strlen ((const char*)event->file);
char* file = (char*)malloc (length + 1);
strcpy (file, (const char*)event->file);
eventObject->file = (vbyte*)file;
eventObject->type = event->type;
}

View File

@@ -67,7 +67,10 @@ namespace lime {
}
eventObject->text = event->text;
int length = strlen ((const char*)event->text);
char* text = (char*)malloc (length + 1);
strcpy (text, (const char*)event->text);
eventObject->text = (vbyte*)text;
eventObject->type = event->type;
eventObject->windowID = event->windowID;