deep copy a SAFEARRAY
| 85 | |
| 86 | // deep copy a SAFEARRAY |
| 87 | SAFEARRAY *copySA(SAFEARRAY *psa) |
| 88 | { |
| 89 | // easiest way to make a deep copy is to use VariantCopy |
| 90 | VARTYPE vt; |
| 91 | SafeArrayGetVartype(psa, &vt); |
| 92 | VARIANT v1, v2; |
| 93 | |
| 94 | VariantInit(&v1); |
| 95 | VariantInit(&v2); |
| 96 | V_VT(&v1) = VT_ARRAY | vt; |
| 97 | V_ARRAY(&v1) = psa; |
| 98 | VariantCopy(&v2, &v1); |
| 99 | SAFEARRAY *sa = V_ARRAY(&v2); |
| 100 | VariantInit(&v2); // make sure it's not owned by this variant |
| 101 | VariantClear(&v2); |
| 102 | VariantInit(&v1); |
| 103 | VariantClear(&v1); |
| 104 | |
| 105 | return sa; |
| 106 | } |
| 107 | |
| 108 | // create a VARIANT wrapper for the safearray |
| 109 | void setSA(JNIEnv *env, jobject arg, SAFEARRAY *sa, int copy) |
no outgoing calls
no test coverage detected