int xdg_file_extension_length = 0;
char **file_extension_array = NULL;
int file_extension_array_index = 0;
+ char *entry;
+ int i;
if (mime_type == NULL || file_extension == NULL || length == NULL)
return mime_type_error(MIME_TYPE_ERROR_INVALID_PARAMETER, __FUNCTION__, NULL);
return mime_type_error(MIME_TYPE_ERROR_OUT_OF_MEMORY, __FUNCTION__, NULL);
for (xdg_file_extension_length = 0; xdg_file_extension[xdg_file_extension_length] != NULL; xdg_file_extension_length++) {
- char *entry = NULL;
-
entry = strrchr(xdg_file_extension[xdg_file_extension_length], FILE_EXTENSION_DELIMITER);
-
if (entry != NULL) {
entry++;
file_extension_array[file_extension_array_index] = strdup(entry);
+ if (!file_extension_array[file_extension_array_index]) {
+ for (i = file_extension_array_index; i >= 0; i--) {
+ if (file_extension_array[i])
+ free(file_extension_array[i]);
+ }
+ free(file_extension_array);
+ return mime_type_error(MIME_TYPE_ERROR_OUT_OF_MEMORY, __FUNCTION__, NULL);
+ }
file_extension_array_index++;
}
}