Skip to content

Commit 0741720

Browse files
committed
ported ext/com_dotnet
1 parent 919b996 commit 0741720

9 files changed

+55
-47
lines changed

ext/com_dotnet/com_com.c

+6-6
Original file line numberDiff line numberDiff line change
@@ -57,11 +57,11 @@ PHP_FUNCTION(com_create_instance)
5757
obj = CDNO_FETCH(object);
5858

5959
if (FAILURE == zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET,
60-
ZEND_NUM_ARGS() TSRMLS_CC, "s|s!ls",
60+
ZEND_NUM_ARGS() TSRMLS_CC, "s|s!is",
6161
&module_name, &module_name_len, &server_name, &server_name_len,
6262
&obj->code_page, &typelib_name, &typelib_name_len) &&
6363
FAILURE == zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET,
64-
ZEND_NUM_ARGS() TSRMLS_CC, "sa|ls",
64+
ZEND_NUM_ARGS() TSRMLS_CC, "sa|is",
6565
&module_name, &module_name_len, &server_params, &obj->code_page,
6666
&typelib_name, &typelib_name_len)) {
6767

@@ -289,14 +289,14 @@ PHP_FUNCTION(com_get_active_object)
289289
CLSID clsid;
290290
char *module_name;
291291
int module_name_len;
292-
long code_page = COMG(code_page);
292+
php_int_t code_page = COMG(code_page);
293293
IUnknown *unk = NULL;
294294
IDispatch *obj = NULL;
295295
HRESULT res;
296296
OLECHAR *module = NULL;
297297

298298
php_com_initialize(TSRMLS_C);
299-
if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|l",
299+
if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|i",
300300
&module_name, &module_name_len, &code_page)) {
301301
php_com_throw_exception(E_INVALIDARG, "Invalid arguments!" TSRMLS_CC);
302302
return;
@@ -784,11 +784,11 @@ PHP_FUNCTION(com_print_typeinfo)
784784
Process COM messages, sleeping for up to timeoutms milliseconds */
785785
PHP_FUNCTION(com_message_pump)
786786
{
787-
long timeoutms = 0;
787+
php_int_t timeoutms = 0;
788788
MSG msg;
789789
DWORD result;
790790

791-
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|l", &timeoutms) == FAILURE)
791+
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|i", &timeoutms) == FAILURE)
792792
RETURN_FALSE;
793793

794794
php_com_initialize(TSRMLS_C);

ext/com_dotnet/com_extension.c

+12-4
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@
2222
#include "config.h"
2323
#endif
2424

25+
#include <intsafe.h>
26+
2527
#include "php.h"
2628
#include "php_ini.h"
2729
#include "ext/standard/info.h"
@@ -382,6 +384,12 @@ PHP_MINIT_FUNCTION(com_dotnet)
382384
REGISTER_INI_ENTRIES();
383385

384386
#define COM_CONST(x) REGISTER_INT_CONSTANT(#x, x, CONST_CS|CONST_PERSISTENT)
387+
388+
#define COM_ERR_CONST(x) { \
389+
php_int_t __tmp; \
390+
ULongToUIntPtr(x, &__tmp); \
391+
REGISTER_INT_CONSTANT(#x, __tmp, CONST_CS|CONST_PERSISTENT); \
392+
}
385393

386394
COM_CONST(CLSCTX_INPROC_SERVER);
387395
COM_CONST(CLSCTX_INPROC_HANDLER);
@@ -441,10 +449,10 @@ PHP_MINIT_FUNCTION(com_dotnet)
441449
#ifdef NORM_IGNOREKASHIDA
442450
COM_CONST(NORM_IGNOREKASHIDA);
443451
#endif
444-
COM_CONST(DISP_E_DIVBYZERO);
445-
COM_CONST(DISP_E_OVERFLOW);
446-
COM_CONST(DISP_E_BADINDEX);
447-
COM_CONST(MK_E_UNAVAILABLE);
452+
COM_ERR_CONST(DISP_E_DIVBYZERO);
453+
COM_ERR_CONST(DISP_E_OVERFLOW);
454+
COM_ERR_CONST(DISP_E_BADINDEX);
455+
COM_ERR_CONST(MK_E_UNAVAILABLE);
448456

449457
return SUCCESS;
450458
}

ext/com_dotnet/com_iterator.c

+2-2
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@
3232
struct php_com_iterator {
3333
zend_object_iterator iter;
3434
IEnumVARIANT *ev;
35-
ulong key;
35+
php_uint_t key;
3636
VARIANT v; /* cached element */
3737
int code_page;
3838
VARIANT safe_array;
@@ -75,7 +75,7 @@ static void com_iter_get_key(zend_object_iterator *iter, zval *key TSRMLS_DC)
7575
{
7676
struct php_com_iterator *I = (struct php_com_iterator*)Z_PTR(iter->data);
7777

78-
if (I->key == (ulong)-1) {
78+
if (I->key == (php_uint_t)-1) {
7979
ZVAL_NULL(key);
8080
} else {
8181
ZVAL_INT(key, I->key);

ext/com_dotnet/com_misc.c

+1-1
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ void php_com_throw_exception(HRESULT code, char *message TSRMLS_DC)
3636
message = php_win32_error_to_msg(code);
3737
free_msg = 1;
3838
}
39-
zend_throw_exception(php_com_exception_class_entry, message, (long)code TSRMLS_CC);
39+
zend_throw_exception(php_com_exception_class_entry, message, (php_int_t)code TSRMLS_CC);
4040
if (free_msg) {
4141
LocalFree(message);
4242
}

ext/com_dotnet/com_persist.c

+3-3
Original file line numberDiff line numberDiff line change
@@ -439,7 +439,7 @@ CPH_METHOD(LoadFromFile)
439439
HRESULT res;
440440
char *filename, *fullpath;
441441
int filename_len;
442-
long flags = 0;
442+
php_int_t flags = 0;
443443
OLECHAR *olefilename;
444444
CPH_FETCH();
445445

@@ -448,7 +448,7 @@ CPH_METHOD(LoadFromFile)
448448
res = get_persist_file(helper);
449449
if (helper->ipf) {
450450

451-
if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "p|l",
451+
if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "p|i",
452452
&filename, &filename_len, &flags)) {
453453
php_com_throw_exception(E_INVALIDARG, "Invalid arguments" TSRMLS_CC);
454454
return;
@@ -506,7 +506,7 @@ CPH_METHOD(GetMaxStreamSize)
506506
php_com_throw_exception(res, NULL TSRMLS_CC);
507507
} else {
508508
/* TODO: handle 64 bit properly */
509-
RETURN_INT((LONG)size.QuadPart);
509+
RETURN_INT((php_int_t)size.QuadPart);
510510
}
511511
}
512512
/* }}} */

ext/com_dotnet/com_saproxy.c

+1-1
Original file line numberDiff line numberDiff line change
@@ -353,7 +353,7 @@ static int saproxy_object_cast(zval *readobj, zval *writeobj, int type TSRMLS_DC
353353
return FAILURE;
354354
}
355355

356-
static int saproxy_count_elements(zval *object, long *count TSRMLS_DC)
356+
static int saproxy_count_elements(zval *object, php_int_t *count TSRMLS_DC)
357357
{
358358
php_com_saproxy *proxy = SA_FETCH(object);
359359
LONG ubound, lbound;

ext/com_dotnet/com_variant.c

+26-26
Original file line numberDiff line numberDiff line change
@@ -39,8 +39,8 @@ static void safe_array_from_zval(VARIANT *v, zval *z, int codepage TSRMLS_DC)
3939
HashPosition pos;
4040
int keytype;
4141
zend_string *strindex;
42-
long intindex = -1;
43-
long max_index = 0;
42+
php_int_t intindex = -1;
43+
php_int_t max_index = 0;
4444
VARIANT *va;
4545
zval *item;
4646

@@ -187,28 +187,28 @@ PHP_COM_DOTNET_API int php_com_zval_from_variant(zval *z, VARIANT *v, int codepa
187187
ZVAL_NULL(z);
188188
break;
189189
case VT_UI1:
190-
ZVAL_INT(z, (long)V_UI1(v));
190+
ZVAL_INT(z, (php_int_t)V_UI1(v));
191191
break;
192192
case VT_I1:
193-
ZVAL_INT(z, (long)V_I1(v));
193+
ZVAL_INT(z, (php_int_t)V_I1(v));
194194
break;
195195
case VT_UI2:
196-
ZVAL_INT(z, (long)V_UI2(v));
196+
ZVAL_INT(z, (php_int_t)V_UI2(v));
197197
break;
198198
case VT_I2:
199-
ZVAL_INT(z, (long)V_I2(v));
199+
ZVAL_INT(z, (php_int_t)V_I2(v));
200200
break;
201201
case VT_UI4: /* TODO: promote to double if large? */
202-
ZVAL_INT(z, (long)V_UI4(v));
202+
ZVAL_INT(z, (php_int_t)V_UI4(v));
203203
break;
204204
case VT_I4:
205-
ZVAL_INT(z, (long)V_I4(v));
205+
ZVAL_INT(z, (php_int_t)V_I4(v));
206206
break;
207207
case VT_INT:
208208
ZVAL_INT(z, V_INT(v));
209209
break;
210210
case VT_UINT: /* TODO: promote to double if large? */
211-
ZVAL_INT(z, (long)V_UINT(v));
211+
ZVAL_INT(z, (php_int_t)V_UINT(v));
212212
break;
213213
case VT_R4:
214214
ZVAL_DOUBLE(z, (double)V_R4(v));
@@ -406,8 +406,8 @@ PHP_COM_DOTNET_API int php_com_copy_variant(VARIANT *dstvar, VARIANT *srcvar TSR
406406
/* {{{ com_variant_create_instance - ctor for new VARIANT() */
407407
PHP_FUNCTION(com_variant_create_instance)
408408
{
409-
/* VARTYPE == unsigned short */ long vt = VT_EMPTY;
410-
long codepage = CP_ACP;
409+
/* VARTYPE == unsigned short */ php_int_t vt = VT_EMPTY;
410+
php_int_t codepage = CP_ACP;
411411
zval *object = getThis();
412412
php_com_dotnet_object *obj;
413413
zval *zvalue = NULL;
@@ -421,7 +421,7 @@ PHP_FUNCTION(com_variant_create_instance)
421421
obj = CDNO_FETCH(object);
422422

423423
if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC,
424-
"z!|ll", &zvalue, &vt, &codepage)) {
424+
"z!|ii", &zvalue, &vt, &codepage)) {
425425
php_com_throw_exception(E_INVALIDARG, "Invalid arguments" TSRMLS_CC);
426426
return;
427427
}
@@ -444,7 +444,7 @@ PHP_FUNCTION(com_variant_create_instance)
444444
but will probably fail (original behavior)
445445
*/
446446
if ((vt & VT_ARRAY) && (V_VT(&obj->v) & VT_ARRAY)) {
447-
long orig_vt = vt;
447+
php_int_t orig_vt = vt;
448448

449449
vt &= ~VT_ARRAY;
450450
if (vt) {
@@ -832,7 +832,7 @@ PHP_FUNCTION(variant_round)
832832
zval *zleft = NULL;
833833
php_com_dotnet_object *obj;
834834
int codepage = CP_ACP;
835-
long decimals = 0;
835+
php_int_t decimals = 0;
836836

837837
VariantInit(&left_val);
838838
VariantInit(&vres);
@@ -867,37 +867,37 @@ PHP_FUNCTION(variant_cmp)
867867
zval *zleft = NULL, *zright = NULL;
868868
php_com_dotnet_object *obj;
869869
int codepage = CP_ACP;
870-
long lcid = LOCALE_SYSTEM_DEFAULT;
871-
long flags = 0;
870+
php_int_t lcid = LOCALE_SYSTEM_DEFAULT;
871+
php_int_t flags = 0;
872872
/* it is safe to ignore the warning for this line; see the comments in com_handlers.c */
873873
STDAPI VarCmp(LPVARIANT pvarLeft, LPVARIANT pvarRight, LCID lcid, DWORD flags);
874874

875875
VariantInit(&left_val);
876876
VariantInit(&right_val);
877877

878878
if (SUCCESS == zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET,
879-
ZEND_NUM_ARGS() TSRMLS_CC, "OO|ll", &zleft, php_com_variant_class_entry,
879+
ZEND_NUM_ARGS() TSRMLS_CC, "OO|ii", &zleft, php_com_variant_class_entry,
880880
&zright, php_com_variant_class_entry, &lcid, &flags)) {
881881
obj = CDNO_FETCH(zleft);
882882
vleft = &obj->v;
883883
obj = CDNO_FETCH(zright);
884884
vright = &obj->v;
885885
} else if (SUCCESS == zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET,
886-
ZEND_NUM_ARGS() TSRMLS_CC, "Oz!|ll", &zleft, php_com_variant_class_entry,
886+
ZEND_NUM_ARGS() TSRMLS_CC, "Oz!|ii", &zleft, php_com_variant_class_entry,
887887
&zright, &lcid, &flags)) {
888888
obj = CDNO_FETCH(zleft);
889889
vleft = &obj->v;
890890
vright = &right_val;
891891
php_com_variant_from_zval(vright, zright, codepage TSRMLS_CC);
892892
} else if (SUCCESS == zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET,
893-
ZEND_NUM_ARGS() TSRMLS_CC, "z!O|ll", &zleft, &zright, php_com_variant_class_entry,
893+
ZEND_NUM_ARGS() TSRMLS_CC, "z!O|ii", &zleft, &zright, php_com_variant_class_entry,
894894
&lcid, &flags)) {
895895
obj = CDNO_FETCH(zright);
896896
vright = &obj->v;
897897
vleft = &left_val;
898898
php_com_variant_from_zval(vleft, zleft, codepage TSRMLS_CC);
899899
} else if (SUCCESS == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC,
900-
"z!z!|ll", &zleft, &zright, &lcid, &flags)) {
900+
"z!z!|ii", &zleft, &zright, &lcid, &flags)) {
901901

902902
vleft = &left_val;
903903
php_com_variant_from_zval(vleft, zleft, codepage TSRMLS_CC);
@@ -959,13 +959,13 @@ PHP_FUNCTION(variant_date_to_timestamp)
959959
Returns a variant date representation of a unix timestamp */
960960
PHP_FUNCTION(variant_date_from_timestamp)
961961
{
962-
long timestamp;
962+
php_int_t timestamp;
963963
time_t ttstamp;
964964
SYSTEMTIME systime;
965965
struct tm *tmv;
966966
VARIANT res;
967967

968-
if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l",
968+
if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "i",
969969
&timestamp)) {
970970
return;
971971
}
@@ -1020,11 +1020,11 @@ PHP_FUNCTION(variant_set_type)
10201020
{
10211021
zval *zobj;
10221022
php_com_dotnet_object *obj;
1023-
/* VARTYPE == unsigned short */ long vt;
1023+
/* VARTYPE == unsigned short */ php_int_t vt;
10241024
HRESULT res;
10251025

10261026
if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC,
1027-
"Ol", &zobj, php_com_variant_class_entry, &vt)) {
1027+
"Oi", &zobj, php_com_variant_class_entry, &vt)) {
10281028
return;
10291029
}
10301030
obj = CDNO_FETCH(zobj);
@@ -1055,12 +1055,12 @@ PHP_FUNCTION(variant_cast)
10551055
{
10561056
zval *zobj;
10571057
php_com_dotnet_object *obj;
1058-
/* VARTYPE == unsigned short */ long vt;
1058+
/* VARTYPE == unsigned short */ php_int_t vt;
10591059
VARIANT vres;
10601060
HRESULT res;
10611061

10621062
if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC,
1063-
"Ol", &zobj, php_com_variant_class_entry, &vt)) {
1063+
"Oi", &zobj, php_com_variant_class_entry, &vt)) {
10641064
return;
10651065
}
10661066
obj = CDNO_FETCH(zobj);

ext/com_dotnet/com_wrapper.c

+3-3
Original file line numberDiff line numberDiff line change
@@ -450,7 +450,7 @@ static void generate_dispids(php_dispatchex *disp TSRMLS_DC)
450450
zend_string *name = NULL;
451451
zval *tmp, tmp2;
452452
int keytype;
453-
ulong pid;
453+
php_uint_t pid;
454454

455455
if (disp->dispid_to_name == NULL) {
456456
ALLOC_HASHTABLE(disp->dispid_to_name);
@@ -467,7 +467,7 @@ static void generate_dispids(php_dispatchex *disp TSRMLS_DC)
467467
&pid, 0, &pos))) {
468468
char namebuf[32];
469469
if (keytype == HASH_KEY_IS_INT) {
470-
snprintf(namebuf, sizeof(namebuf), "%d", pid);
470+
snprintf(namebuf, sizeof(namebuf), ZEND_UINT_FMT, pid);
471471
name = STR_INIT(namebuf, strlen(namebuf), 0);
472472
} else {
473473
STR_ADDREF(name);
@@ -590,7 +590,7 @@ PHP_COM_DOTNET_API IDispatch *php_com_wrapper_export_as_sink(zval *val, GUID *si
590590
zend_string *name = NULL;
591591
zval tmp, *ntmp;
592592
int keytype;
593-
ulong pid;
593+
php_uint_t pid;
594594

595595
disp->dispid_to_name = id_to_name;
596596

ext/com_dotnet/php_com_dotnet_internal.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ typedef struct _php_com_dotnet_object {
3838
int modified;
3939

4040
ITypeInfo *typeinfo;
41-
long code_page;
41+
php_int_t code_page;
4242

4343
zend_class_entry *ce;
4444

0 commit comments

Comments
 (0)