blob: b54d091598146dc676cb97e1b7bbece489e0189b [file] [log] [blame]
Port from Fedora20
| commit aca6c7f910ffe9930b5789969f0adfadd668bb46
| Author: Michal Minar <miminar@redhat.com>
| Date: Fri Jun 20 10:50:45 2014 +0200
|
| Fix returning instance as an output argument from method
|
| Submitted By: Radek Novacek <rnovacek@redhat.com>
Upstream-Status: Pending
Signed-off-by: Qian Lei <qianl.fnst@cn.fujitsu.com>
diff --git a/src/program/main.cpp b/src/program/main.cpp
index 885dc12..9e7108a 100644
--- a/src/program/main.cpp
+++ b/src/program/main.cpp
@@ -506,7 +506,11 @@ static void gen_feature_decls(
// Add sig entry [type][length][name][zero-terminator]
- KTag tag = _ktag(pd->data_type, pd->array_index, key, false, false);
+ KTag tag;
+ if (pd->qualifiers->has_key("EmbeddedInstance"))
+ tag = _ktag(TOK_INSTANCE, pd->array_index, key, false, false);
+ else
+ tag = _ktag(pd->data_type, pd->array_index, key, false, false);
pack_tag(sig, tag);
pack_name(sig, pd->name);
count++;
@@ -640,6 +644,7 @@ static void gen_param(FILE* os, MOF_Parameter* p, vector<unsigned char>& sig)
const char* ktn = _ktype_name(p->data_type);
if (p->qualifiers->has_key("EmbeddedInstance")) {
+ tag = _ktag(TOK_INSTANCE, p->array_index, false, in, out);
if (p->array_index)
put(os, " KInstanceA $0;\n", p->name, NULL);
else