mmd_engine * e = mmd_engine_create_with_string(source, 0);
result = mmd_engine_metavalue_for_key(e, key);
- result = my_strdup(result);
+
+ if (result) {
+ // We need to return a copy of the string
+ result = my_strdup(result);
+ }
mmd_engine_free(e, true);
result = mmd_engine_metavalue_for_key(e, key);
if (result) {
+ // We need to return a copy of the string
result = my_strdup(result);
}
// List metadata keys
char_result = mmd_string_metadata_keys(buffer->str);
- fputs(char_result, stdout);
+ if (char_result) {
+ fputs(char_result, stdout);
- free(char_result);
+ free(char_result);
+ }
} else if (a_extract->count > 0) {
// Extract metadata key
const char * query = a_extract->sval[0];
char_result = mmd_string_metavalue_for_key(buffer->str, query);
- fputs(char_result, stdout);
- fputc('\n', stdout);
+ if (char_result) {
+ fputs(char_result, stdout);
+ fputc('\n', stdout);
- free(char_result);
+ free(char_result);
+ }
} else {
// Regular processing
// List metadata keys
char_result = mmd_string_metadata_keys(buffer->str);
- fputs(char_result, stdout);
+ if (char_result) {
+ fputs(char_result, stdout);
- free(char_result);
+ free(char_result);
+ }
} else if (a_extract->count > 0) {
// Extract metadata key
const char * query = a_extract->sval[0];
char_result = mmd_string_metavalue_for_key(buffer->str, query);
- fputs(char_result, stdout);
- fputc('\n', stdout);
+ if (char_result) {
+ fputs(char_result, stdout);
+ fputc('\n', stdout);
- free(char_result);
+ free(char_result);
+ }
} else {
// Regular processing