CFFI string work
This commit is contained in:
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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;
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user