File tree Expand file tree Collapse file tree 3 files changed +40
-5
lines changed Expand file tree Collapse file tree 3 files changed +40
-5
lines changed Original file line number Diff line number Diff line change
1
+ Tue Feb 27 21:19:35 2007 NAKAMURA Usaku <usa@ruby-lang.org>
2
+
3
+ * win32/win32.c (set_pioinfo_extra): new function for VC++8 SP1
4
+ workaround. [ruby-core:10259]
5
+
6
+ * win32/win32.c (NtInitialize): call above function.
7
+
1
8
Mon Feb 26 09:57:58 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
2
9
3
10
* signal.c (ruby_signal): don't set SA_RESTART. a backport from
Original file line number Diff line number Diff line change 1
1
#define RUBY_VERSION "1.8.5"
2
- #define RUBY_RELEASE_DATE "2007-02-26 "
2
+ #define RUBY_RELEASE_DATE "2007-02-27 "
3
3
#define RUBY_VERSION_CODE 185
4
- #define RUBY_RELEASE_CODE 20070226
5
- #define RUBY_PATCHLEVEL 21
4
+ #define RUBY_RELEASE_CODE 20070227
5
+ #define RUBY_PATCHLEVEL 22
6
6
7
7
#define RUBY_VERSION_MAJOR 1
8
8
#define RUBY_VERSION_MINOR 8
9
9
#define RUBY_VERSION_TEENY 5
10
10
#define RUBY_RELEASE_YEAR 2007
11
11
#define RUBY_RELEASE_MONTH 2
12
- #define RUBY_RELEASE_DAY 26
12
+ #define RUBY_RELEASE_DAY 27
13
13
14
14
RUBY_EXTERN const char ruby_version [];
15
15
RUBY_EXTERN const char ruby_release_date [];
Original file line number Diff line number Diff line change @@ -395,7 +395,10 @@ NtInitialize(int *argc, char ***argv)
395
395
int ret ;
396
396
397
397
#if _MSC_VER >= 1400
398
+ static void set_pioinfo_extra (void );
399
+
398
400
_set_invalid_parameter_handler (invalid_parameter );
401
+ set_pioinfo_extra ();
399
402
#endif
400
403
401
404
//
@@ -1668,11 +1671,36 @@ EXTERN_C _CRTIMP ioinfo * __pioinfo[];
1668
1671
1669
1672
#define IOINFO_L2E 5
1670
1673
#define IOINFO_ARRAY_ELTS (1 << IOINFO_L2E)
1671
- #define _pioinfo (i ) (__pioinfo[i >> IOINFO_L2E] + (i & (IOINFO_ARRAY_ELTS - 1)))
1674
+ #define _pioinfo (i ) ((ioinfo*)((char*)( __pioinfo[i >> IOINFO_L2E]) + (i & (IOINFO_ARRAY_ELTS - 1)) * (sizeof(ioinfo) + pioinfo_extra )))
1672
1675
#define _osfhnd (i ) (_pioinfo(i)->osfhnd)
1673
1676
#define _osfile (i ) (_pioinfo(i)->osfile)
1674
1677
#define _pipech (i ) (_pioinfo(i)->pipech)
1675
1678
1679
+ #if _MSC_VER >= 1400
1680
+ static size_t pioinfo_extra = 0 ; /* workaround for VC++8 SP1 */
1681
+
1682
+ static void
1683
+ set_pioinfo_extra (void )
1684
+ {
1685
+ int fd ;
1686
+
1687
+ fd = open ("NUL" , O_RDONLY );
1688
+ for (pioinfo_extra = 0 ; pioinfo_extra <= 64 ; pioinfo_extra += sizeof (void * )) {
1689
+ if (_osfhnd (fd ) == _get_osfhandle (fd )) {
1690
+ break ;
1691
+ }
1692
+ }
1693
+ close (fd );
1694
+
1695
+ if (pioinfo_extra > 64 ) {
1696
+ /* not found, maybe something wrong... */
1697
+ pioinfo_extra = 0 ;
1698
+ }
1699
+ }
1700
+ #else
1701
+ #define pioinfo_extra 0
1702
+ #endif
1703
+
1676
1704
#define _set_osfhnd (fh , osfh ) (void)(_osfhnd(fh) = osfh)
1677
1705
#define _set_osflags (fh , flags ) (_osfile(fh) = (flags))
1678
1706
You can’t perform that action at this time.
0 commit comments