Fix failure for setting attribute on 64bit environment 35/93835/1
authorJeongmo Yang <jm80.yang@samsung.com>
Wed, 26 Oct 2016 05:52:04 +0000 (14:52 +0900)
committerJeongmo Yang <jm80.yang@samsung.com>
Wed, 26 Oct 2016 05:52:04 +0000 (14:52 +0900)
[Version] 0.10.86
[Profile] Common
[Issue Type] Bug fix
[Dependency module] N/A
[Test] [M(T) - Boot=(OK), sdb=(OK), Home=(OK), Touch=(OK), Version=tizen-mobile_20161025.2]

Change-Id: I13f5cbb2e80be7437a67876dc64895f625d68976
Signed-off-by: Jeongmo Yang <jm80.yang@samsung.com>
packaging/libmm-camcorder.spec
src/mm_camcorder_attribute.c

index 23e6b2f..2e1d8c9 100644 (file)
@@ -1,6 +1,6 @@
 Name:       libmm-camcorder
 Summary:    Camera and recorder library
-Version:    0.10.85
+Version:    0.10.86
 Release:    0
 Group:      Multimedia/Libraries
 License:    Apache-2.0
index 03936ca..331ac68 100644 (file)
@@ -1731,6 +1731,7 @@ _mmcamcorder_set_attributes(MMHandleType handle, char **err_attr_name, const cha
        MMHandleType attrs = 0;
        int ret = MM_ERROR_NONE;
        mmf_camcorder_t *hcamcorder = MMF_CAMCORDER(handle);
+       va_list var_args_copy;
 
        mmf_return_val_if_fail(handle, MM_ERROR_CAMCORDER_INVALID_ARGUMENT);
        /*mmf_return_val_if_fail(err_attr_name, MM_ERROR_CAMCORDER_INVALID_ARGUMENT);*/
@@ -1740,6 +1741,9 @@ _mmcamcorder_set_attributes(MMHandleType handle, char **err_attr_name, const cha
                return MM_ERROR_CAMCORDER_CMD_IS_RUNNING;
        }
 
+       /* copy var_args to keep original var_args */
+       va_copy(var_args_copy, var_args);
+
        attrs = MMF_CAMCORDER_ATTRS(handle);
        if (attrs) {
                ret = __mmcamcorder_check_valid_pair(handle, err_attr_name, attribute_name, var_args);
@@ -1750,9 +1754,12 @@ _mmcamcorder_set_attributes(MMHandleType handle, char **err_attr_name, const cha
 
        if (ret == MM_ERROR_NONE) {
                hcamcorder->error_code = MM_ERROR_NONE;
-               ret = mm_attrs_set_valist(attrs, err_attr_name, attribute_name, var_args);
+               /* In 64bit environment, unexpected result is returned if var_args is used again. */
+               ret = mm_attrs_set_valist(attrs, err_attr_name, attribute_name, var_args_copy);
        }
 
+       va_end(var_args_copy);
+
        _MMCAMCORDER_UNLOCK_CMD(handle);
 
        if (ret != MM_ERROR_NONE) {