summaryrefslogtreecommitdiff
path: root/ext/rpc
diff options
context:
space:
mode:
authorZeev Suraski <zeev@php.net>2000-12-22 12:57:09 +0000
committerZeev Suraski <zeev@php.net>2000-12-22 12:57:09 +0000
commitaa6d2ac5d0ee1d7cd608c6930ad0c57bc2953c47 (patch)
tree5776ae30d4c8115659935309042b9784ba55d592 /ext/rpc
parent36eaad252fc5fe292cd4f071f76e7879ce21130c (diff)
downloadphp-git-aa6d2ac5d0ee1d7cd608c6930ad0c57bc2953c47.tar.gz
Heads up people!
Updated the get_current_key() API - the relevant authors, please take a look at the updated code and make sure it's ok...
Diffstat (limited to 'ext/rpc')
-rw-r--r--ext/rpc/com/COM.c19
-rw-r--r--ext/rpc/java/java.c3
2 files changed, 19 insertions, 3 deletions
diff --git a/ext/rpc/com/COM.c b/ext/rpc/com/COM.c
index 1ff3f006b5..7f6a606ece 100644
--- a/ext/rpc/com/COM.c
+++ b/ext/rpc/com/COM.c
@@ -367,6 +367,20 @@ static void php_variant_to_pval(VARIANTARG *var_arg, pval *pval_arg, int persist
}
pval_arg->type = IS_DOUBLE;
break;
+ case VT_DECIMAL:
+ switch (VarR8FromDec(&var_arg->decVal, &pval_arg->value.dval)) {
+ case DISP_E_OVERFLOW:
+ php_error(E_WARNING, "Overflow converting DECIMAL value to PHP floating point - number truncated");
+ pval_arg->value.dval = DBL_MAX;
+ /* break missing intentionally */
+ case S_OK:
+ pval_arg->type = IS_DOUBLE;
+ break;
+ default:
+ php_error(E_WARNING, "Error converting DECIMAL value to PHP floating point");
+ break;
+ }
+ break;
case VT_BOOL:
if (pval_arg->is_ref == 0 || (var_arg->vt & VT_BYREF) != VT_BYREF) {
if (var_arg->boolVal & 0xFFFF) {
@@ -383,6 +397,9 @@ static void php_variant_to_pval(VARIANTARG *var_arg, pval *pval_arg, int persist
}
pval_arg->type = IS_BOOL;
break;
+ case VT_VOID:
+ pval_arg->type = IS_NULL;
+ break;
case VT_BSTR:
if (pval_arg->is_ref == 0 || (var_arg->vt & VT_BYREF) != VT_BYREF) {
pval_arg->value.str.val = php_OLECHAR_to_char(var_arg->bstrVal, &pval_arg->value.str.len, persistent);
@@ -432,7 +449,7 @@ static void php_variant_to_pval(VARIANTARG *var_arg, pval *pval_arg, int persist
break;
case VT_UNKNOWN:
var_arg->pdispVal->lpVtbl->Release(var_arg->pdispVal);
- /* fallthru */
+ /* break missing intentionally */
default:
php_error(E_WARNING,"Unsupported variant type: %d (0x%X)", var_arg->vt, var_arg->vt);
var_reset(pval_arg);
diff --git a/ext/rpc/java/java.c b/ext/rpc/java/java.c
index acf699a396..68541f673e 100644
--- a/ext/rpc/java/java.c
+++ b/ext/rpc/java/java.c
@@ -349,13 +349,12 @@ static jobject _java_makeObject(pval* arg JG_DC) {
while(zend_hash_get_current_data(arg->value.ht, (void**)&value) == SUCCESS) {
jval = _java_makeObject(*value JG_CC);
- switch (zend_hash_get_current_key(arg->value.ht, &string_key, &num_key)) {
+ switch (zend_hash_get_current_key(arg->value.ht, &string_key, &num_key, 0)) {
case HASH_KEY_IS_STRING:
key.type = IS_STRING;
key.value.str.val = string_key;
key.value.str.len = strlen(string_key);
jkey = _java_makeObject(&key JG_CC);
- efree(string_key);
break;
case HASH_KEY_IS_LONG:
key.type = IS_LONG;