{
MMHandleType attrs = 0;
int ret = MM_ERROR_NONE;
+ va_list var_args_copy;
mmf_return_val_if_fail(handle, MM_ERROR_STREAMRECORDER_INVALID_ARGUMENT);
+ /* copy var_args to keep original var_args */
+ va_copy(var_args_copy, var_args);
+
attrs = MMF_STREAMRECORDER_ATTRS(handle);
if (!attrs) {
_mmstreamrec_dbg_err("handle 0x%x, attrs is NULL, attr name [%s]", handle, attribute_name);
_mmstreamrec_dbg_err("__mmstreamrecorder_check_valid_pair handle 0x%x, attr name [%s] , ret = %d", handle, attribute_name, ret);
- if (ret == MM_ERROR_NONE)
- ret = mm_attrs_set_valist(attrs, err_attr_name, attribute_name, var_args);
+ if (ret == MM_ERROR_NONE) {
+ /* 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);
_mmstreamrec_dbg_err("mm_attrs_set_valist handle 0x%x, attr name [%s] , ret = %d", handle, attribute_name, ret);
return ret;