Fix test failed on linux

This commit is contained in:
2022-03-03 14:03:52 +08:00
parent 11471e3700
commit f9acfa776d
3 changed files with 16 additions and 6 deletions

View File

@@ -31,8 +31,8 @@ EXIF_API int exif_image_write_metadata(ExifImage* image);
EXIF_API void free_exif_image(ExifImage* img);
EXIF_API ExifKey* exif_create_key_by_key(const char* key);
EXIF_API ExifKey* exif_create_key_by_id(uint16_t id, const char* group_name);
EXIF_API const char* exif_get_key_key(ExifKey* key);
EXIF_API const char* exif_get_key_family_name(ExifKey* key);
EXIF_API char* exif_get_key_key(ExifKey* key);
EXIF_API char* exif_get_key_family_name(ExifKey* key);
EXIF_API char* exif_get_key_group_name(ExifKey* key);
EXIF_API char* exif_get_key_tag_name(ExifKey* key);
EXIF_API uint16_t exif_get_key_tag_tag(ExifKey* key);

View File

@@ -78,14 +78,20 @@ end:
return nullptr;
}
const char* exif_get_key_key(ExifKey* key) {
char* exif_get_key_key(ExifKey* key) {
if (!key || !key->key) return nullptr;
return std::move(key->key->key().c_str());
auto s = key->key->key();
char* re = nullptr;
if (!string2char(s, re)) return nullptr;
return re;
}
const char* exif_get_key_family_name(ExifKey* key) {
char* exif_get_key_family_name(ExifKey* key) {
if (!key || !key->key) return nullptr;
return key->key->familyName();
auto s = key->key->familyName();
char* re = nullptr;
if (!string2char(s, re)) return nullptr;
return re;
}
char* exif_get_key_group_name(ExifKey* key) {

View File

@@ -163,6 +163,8 @@ impl ExifKey {
return None;
}
let s = unsafe { CStr::from_ptr(r) };
let s = s.to_owned();
unsafe { _exif::exif_free(r as *mut ::std::os::raw::c_void) };
let s = s.to_str();
if s.is_err() {
return None;
@@ -181,6 +183,8 @@ impl ExifKey {
return None;
}
let s = unsafe { CStr::from_ptr(r) };
let s = s.to_owned();
unsafe { _exif::exif_free(r as *mut ::std::os::raw::c_void) };
let s = s.to_str();
if s.is_err() {
return None;