Skip to content

Commit f169931

Browse files
committed
win32ole: separate global variable declarations and definitions
https://gcc.gnu.org/gcc-10/changes.html#c > * GCC now defaults to `-fno-common`. As a result, global > variable accesses are more efficient on various targets. In > C, global variables with multiple tentative definitions now > result in linker errors. With `-fcommon` such definitions are > silently merged during linking.
1 parent dd830fa commit f169931

18 files changed

+29
-11
lines changed

ext/win32ole/win32ole.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3962,6 +3962,7 @@ check_nano_server(void)
39623962
}
39633963
}
39643964

3965+
LCID cWIN32OLE_lcid;
39653966

39663967
void
39673968
Init_win32ole(void)

ext/win32ole/win32ole.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -112,8 +112,8 @@ struct oledata {
112112
IDispatch *pDispatch;
113113
};
114114

115-
VALUE cWIN32OLE;
116-
LCID cWIN32OLE_lcid;
115+
extern VALUE cWIN32OLE;
116+
extern LCID cWIN32OLE_lcid;
117117

118118
struct oledata *oledata_get_struct(VALUE obj);
119119
LPWSTR ole_vstr2wc(VALUE vstr);

ext/win32ole/win32ole_error.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,9 @@ ole_raise(HRESULT hr, VALUE ecs, const char *fmt, ...)
6060
rb_exc_raise(rb_exc_new_str(ecs, msg));
6161
}
6262

63+
VALUE eWIN32OLERuntimeError;
64+
VALUE eWIN32OLEQueryInterfaceError;
65+
6366
void
6467
Init_win32ole_error(void)
6568
{

ext/win32ole/win32ole_error.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
#ifndef WIN32OLE_ERROR_H
22
#define WIN32OLE_ERROR_H 1
33

4-
VALUE eWIN32OLERuntimeError;
5-
VALUE eWIN32OLEQueryInterfaceError;
4+
extern VALUE eWIN32OLERuntimeError;
5+
extern VALUE eWIN32OLEQueryInterfaceError;
66
NORETURN(PRINTF_ARGS(void ole_raise(HRESULT hr, VALUE ecs, const char *fmt, ...), 3, 4));
77
void Init_win32ole_error(void);
88

ext/win32ole/win32ole_method.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -923,6 +923,8 @@ folemethod_inspect(VALUE self)
923923
return default_inspect(self, "WIN32OLE_METHOD");
924924
}
925925

926+
VALUE cWIN32OLE_METHOD;
927+
926928
void Init_win32ole_method(void)
927929
{
928930
cWIN32OLE_METHOD = rb_define_class("WIN32OLE_METHOD", rb_cObject);

ext/win32ole/win32ole_method.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ struct olemethoddata {
77
UINT index;
88
};
99

10-
VALUE cWIN32OLE_METHOD;
10+
extern VALUE cWIN32OLE_METHOD;
1111
VALUE folemethod_s_allocate(VALUE klass);
1212
VALUE ole_methods_from_typeinfo(ITypeInfo *pTypeInfo, int mask);
1313
VALUE create_win32ole_method(ITypeInfo *pTypeInfo, VALUE name);

ext/win32ole/win32ole_record.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -589,6 +589,8 @@ folerecord_inspect(VALUE self)
589589
field);
590590
}
591591

592+
VALUE cWIN32OLE_RECORD;
593+
592594
void
593595
Init_win32ole_record(void)
594596
{

ext/win32ole/win32ole_record.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
#ifndef WIN32OLE_RECORD_H
22
#define WIN32OLE_RECORD_H 1
33

4-
VALUE cWIN32OLE_RECORD;
4+
extern VALUE cWIN32OLE_RECORD;
55
void ole_rec2variant(VALUE rec, VARIANT *var);
66
void olerecord_set_ivar(VALUE obj, IRecordInfo *pri, void *prec);
77
VALUE create_win32ole_record(IRecordInfo *pri, void *prec);

ext/win32ole/win32ole_type.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -883,6 +883,8 @@ foletype_inspect(VALUE self)
883883
return default_inspect(self, "WIN32OLE_TYPE");
884884
}
885885

886+
VALUE cWIN32OLE_TYPE;
887+
886888
void Init_win32ole_type(void)
887889
{
888890
cWIN32OLE_TYPE = rb_define_class("WIN32OLE_TYPE", rb_cObject);

ext/win32ole/win32ole_type.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
#ifndef WIN32OLE_TYPE_H
22
#define WIN32OLE_TYPE_H 1
3-
VALUE cWIN32OLE_TYPE;
3+
extern VALUE cWIN32OLE_TYPE;
44
VALUE create_win32ole_type(ITypeInfo *pTypeInfo, VALUE name);
55
ITypeInfo *itypeinfo(VALUE self);
66
VALUE ole_type_from_itypeinfo(ITypeInfo *pTypeInfo);

0 commit comments

Comments
 (0)