Commit Graph

412 Commits

Author SHA1 Message Date
Ion Gaztañaga
b3dd777e5c Fixes ticket #12744 ("winapi::set_timer_resolution inadvertently changes timer resolution (Windows)") 2017-01-20 00:49:48 +01:00
Ion Gaztañaga
d9788306ca Merge branch 'explicit_ctor_and_32_64_sharing' of https://github.com/think-cell/interprocess into think-cell-explicit_ctor_and_32_64_sharing 2017-01-19 23:28:05 +01:00
Tobias Reh
f78a2e2ffd Restore possibility to communicate between 32 and 64 bit processes using 64 bit offsets
If the pointed adress is 128 bytes lower than 'this', we have

(a) 32bit uintptr_t, 32bit OffsetType: offset = 0x        ffffff80
(b) 64bit uintptr_t, 64bit OffsetType: offset = 0xffffffffffffff80
(c) 32bit uintptr_t, 64bit OffsetType: offset = 0x00000000ffffff80

If we read (c) from an 64bit process, it gets interpreted
as 4294967232 bytes forward rather than 128 bytes backward.

This commit solves the problem by ajusting the offset representation of (c)
to match (b).
For the 32bit process itself (c) this makes no difference, as the most
significant 4 bytes get truncated anyway when convertig to a pointer.

Note: For the default OffsetType=uintptr_t this change is only
syntactical.
2017-01-16 11:09:15 +01:00
Tobias Reh
892e541c17 Enable explicit construction of offset_ptr<Derived> from offset_ptr<Base>
With 'enable_if<!is_convertible && is_constructible>' and 'explicit',
care is taken to behave just as 'normal' pointers.
2017-01-16 11:09:14 +01:00
Tobias Reh
46a136479d Conform to std::pointer_traits requirements
offset_ptr<T, ...>::rebind<U> must be offset_ptr<U, ...> directly

to avoid breaking older pointer_traits implementations (like in Visual Studio 2015),
'other' is added as typedef so offset_ptr<T, ...>::rebind<U>::other still works
2017-01-13 16:04:49 +01:00
Ion Gaztañaga
469f38d553 Added test case for BOOST_INTERPROCESS_SHARED_DIR_FUNC 2017-01-12 15:00:10 +01:00
Ion Gaztañaga
5184945ba6 Remove duplicated namespace declaration 2017-01-12 09:12:12 +01:00
Ion Gaztañaga
68088a469a Add #error if both BOOST_INTERPROCESS_SHARED_DIR_FUNC and BOOST_INTERPROCESS_SHARED_DIR_PATH are defined. 2016-11-13 19:15:04 +01:00
Ion Gaztañaga
dd41f0ba71 Merge branch 'develop' of https://github.com/stheophil/interprocess into stheophil-develop 2016-11-13 17:50:09 +01:00
Ion Gaztañaga
90e39b62bc Merge branch 'develop' of https://github.com/justinbrewer/interprocess into justinbrewer-develop 2016-11-13 00:42:07 +01:00
Ion Gaztañaga
b860e7c255 Avoid GCC address sanitizer errors with incorrect vbptr in constructor 2016-11-12 23:55:57 +01:00
Ion Gaztañaga
3e216dd481 Avoid reference to null errors in sanitizers 2016-11-12 23:55:20 +01:00
Ion Gaztañaga
622bc616d3 Some old shmat implementation take the address as a non-const void pointer so uncast it to make code portable. 2016-11-12 19:18:27 +01:00
Ion Gaztañaga
3d9318aace Disable forceinline for older compilers due to bugs 2016-11-12 19:18:02 +01:00
Justin Brewer
5d42ab216e Add xsi_key(key_t) constructor 2016-11-05 02:14:11 -04:00
Sebastian Theophil
6956f11392 Replaced BOOST_INTERPROCESS_TEMP_DIR_FUNC with BOOST_INTERPROCESS_SHARED_DIR_FUNC
- BOOST_INTERPROCESS_SHARED_DIR_FUNC has the same semantics as BOOST_INTERPROCESS_SHARED_DIR_PATH and can be used as the more flexible alternative
- Added documentation
2016-09-22 11:59:29 +02:00
Sebastian Theophil
6bb41cb5f8 Use Mac Sandbox compatible temp folder 2016-09-19 15:42:32 +02:00
Ion Gaztañaga
446d4cdf37 Fix variadic indexes from int to std::size_t. 2016-08-23 02:16:26 +02:00
Ion Gaztañaga
8253c1b0ad Use boost::is_convertible instead of the old implementation, as MSVC compilers can have odd compilation errors with is_convertible. 2016-08-09 22:34:14 +02:00
Ion Gaztañaga
941d4488b8 Silence windows header warnings for old GCC compilers marking it as a system header 2016-06-29 14:46:21 +02:00
Sebastian Theophil
b281e9557b Fix undefined behavior
managed_open_or_create_impl::priv_open_or_create calls
construct_func.get_min_size() before construct_func::operator().

The implementation of create_open_func::get_min_size called the static
function segment_manager::get_min_size() by making a member function
call on m_frontend->get_segment_manager() which is still null at this
point.

The crashes when compiling with clang’s undefined behavior sanitizer
2016-06-28 10:30:59 +02:00
Ion Gaztañaga
6fe5f1abc6 Change -pedantic warning disabling method for GCC 6, as it does not like the previous solution. 2016-06-25 11:24:38 +02:00
Ion Gaztañaga
fe75848cb6 Merge branch 'fix_mingw' of https://github.com/pavelvat/interprocess into pavelvat-fix_mingw 2015-12-23 23:29:02 +01:00
Ion Gaztañaga
e242de82aa Replaced BOOST_FORCEINLINE with BOOST_INTERPROCESS_FORCEINLINE so it's configurable. 2015-12-23 21:42:33 +01:00
Pavel Vatagin
f2c5e598b8 Fixed case sensetive for linux mingw 2015-12-23 20:50:12 +03:00
Marshall Clow
90892fcbf9 Update gcc version check for 'diagnostic pop' 2015-12-08 11:33:16 -08:00
Marshall Clow
fe47ea6f36 Update gcc version check for 'diagnostic push' 2015-12-08 11:32:23 -08:00
Ion Gaztañaga
73b3d75cf9 - Added BOOST_FORCE_INLINE to offset_ptr function.
- Reimplemented pointer_plus_bits to correct bugs and use uintptr_t instead of std::size_t.
2015-10-17 00:26:24 +02:00
Ion Gaztañaga
e64e3b5acc Remove undefined behaviour from offset_ptr. Used uintptr_t internally and all calculations are done in unsigned integers.
Support GCC 3.4, which does not allow advanced sfinae in assignment operators.
2015-10-14 23:29:53 +02:00
Ion Gaztañaga
1374fd2d67 Removed uninitialized variable warnings in GCC 2015-10-14 22:25:00 +02:00
Ion Gaztañaga
b0cb8716cc Support GCC 3.4 on Mingw. Ifdef Wbemidl derived code, which is not supported by Mingw, extra cast in interlocked operations. 2015-10-14 22:24:27 +02:00
Ion Gaztañaga
a082f0826f Reduce date_time include dependencies. 2015-10-14 22:22:18 +02:00
Ion Gaztañaga
eab4a9bd12 New documentation macros 2015-10-14 22:21:03 +02:00
Ion Gaztañaga
01ae144003 Added pragma diagnostic for GCC warnings 2015-10-14 22:20:32 +02:00
Ion Gaztañaga
e1a659468b #undef msvc bug workaround macro after being used 2015-09-30 22:28:06 +02:00
Ion Gaztañaga
845d352287 Fixed Trac bug #11699 ("Forward declarations of std templates causes stack corruption under Visual Studio 2015") 2015-09-30 22:20:18 +02:00
Ion Gaztañaga
d4c6011831 Removed unused piecewise_construct; 2015-09-18 13:47:23 +02:00
Ion Gaztañaga
bd14ee3b0c Use newly refactored move/detail/std_fwd_xxx.hpp headers 2015-09-14 22:39:18 +02:00
Ion Gaztañaga
e352a84dd2 Fixed Trac #5139 ("Initial Stream Position in Boost.Interprocess.Vectorstream") 2015-06-24 16:18:17 +02:00
Ion Gaztañaga
5c090a64be Remove dead XSI code. 2015-06-23 22:57:33 +02:00
Ion Gaztañaga
9b5ccf2d4b Cleanup commented code in exceptions.hpp and update changelog with pull #19 2015-06-23 22:11:32 +02:00
Ion Gaztañaga
88e2e960fe Merge branch 'bugfix/exception-visibility' of https://github.com/Romain-Geissler/interprocess into Romain-Geissler-bugfix/exception-visibility 2015-06-23 22:01:25 +02:00
Ion Gaztañaga
c04a5db131 Support libc++ & gcc in std fwd declarations 2015-06-09 14:53:13 +02:00
Romain Geissler
c98d55c79f Fix exception visibility. 2015-05-18 23:58:26 +02:00
Ion Gaztañaga
5c00dab958 Try to support GCC's versioned std namespaces in forward declarations. 2015-02-26 00:37:48 +01:00
Ion Gaztañaga
09784e6201 Include boost/config.hpp before testing BOOST_HAS_PRAGMA_ONCE. 2015-02-02 16:12:21 +01:00
Ion Gaztañaga
c35b660d52 Use BOOST_NOEXCEPT AND BOOST_NOINLINE instead of cumstom macros 2015-02-01 01:01:54 +01:00
Ion Gaztañaga
25bb48435f - Rewritten posix features detection according to the first POSIX/Single Unix Specification that standardized it.
- Added macro for unnamed semaphores as OSX claims this support but returns ENOSYS, which is not very useful.
- Added macro for mapped files, as QNX does not support them.
2015-01-31 23:18:32 +01:00
Ion Gaztañaga
870d1b8e2d Avoid octal for GCc version check 2015-01-14 15:47:49 +01:00
Ion Gaztañaga
5b20f4910d Replaced _MSC_VER with BOOST_HAS_PRAGMA_ONCE before #pragma once. 2015-01-10 12:50:47 +01:00