#
268f99dd |
| 22-Dec-2021 |
Niels Sascha Reedijk <niels.reedijk@gmail.com> |
Merge branch 'master' into dev/netservices
|
#
62cdbd25 |
| 01-Dec-2021 |
Augustin Cavalier <waddlesplash@gmail.com> |
libbe_build: Add header needed on some systems.
|
#
711e2dc0 |
| 01-Dec-2021 |
Augustin Cavalier <waddlesplash@gmail.com> |
Adjust all struct dirent creations (again), this time to use offsetof().
The dirent struct is not packed, so offsetof(dirent, d_name) != sizeof(dirent). Thus in order not to waste the alignment byte
Adjust all struct dirent creations (again), this time to use offsetof().
The dirent struct is not packed, so offsetof(dirent, d_name) != sizeof(dirent). Thus in order not to waste the alignment bytes (which are significant, on x86_64 at least, sizeof(dirent)==32, but offsetof(...)=26.)
This is also the most portable way to handle things, and should work just fine in cross-platform code that has a non-zero-sized d_name.
show more ...
|
#
2532a287 |
| 23-Nov-2021 |
Augustin Cavalier <waddlesplash@gmail.com> |
Avoid using unions for LongDirEntry.
GCC still assumes that the dirent has no data past the end for some scenarios here and still mis-optimizes things. Therefore, drop the usages of unions altogethe
Avoid using unions for LongDirEntry.
GCC still assumes that the dirent has no data past the end for some scenarios here and still mis-optimizes things. Therefore, drop the usages of unions altogether, and instead use a casted character array.
Additionally, use B_FILE_NAME_LENGTH for the array, not B_PATH_NAME_LENGTH, and make sure to add 1 for the NULL terminator.
show more ...
|
#
8f03af00 |
| 18-Nov-2021 |
Augustin Cavalier <waddlesplash@gmail.com> |
Storage: Rework LongDirEntry to be a union.
Our dirent structure is "slim": it has a flexible-length array at the end which must be allocated to whatever size the consumer wants. However, we use [1]
Storage: Rework LongDirEntry to be a union.
Our dirent structure is "slim": it has a flexible-length array at the end which must be allocated to whatever size the consumer wants. However, we use [1] there and not [0] or [], which meant GCC thought it was not a flexible-length array, and so it optimized various string accesses that it assumed must be always false. Among these was BDirectory's check for "." and "..", and so that resulted in infinite loops.
When changing our dirent structure to a proper FLA instead of [1], GCC then throws errors on LongDirEntry as it has data "after" the FLA; which is what we want, but there is no way to tell GCC that. So now we use a union instead, which is the proper way to statically allocate a FLA.
This is part of #17389, but the real fix requires changing our dirent structure, which is coming in a separate commit.
show more ...
|
#
9f81ca83 |
| 27-Sep-2013 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Merge branch 'package-management'
Conflicts: src/preferences/network/Jamfile
|
#
d0815ca0 |
| 08-May-2013 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Add private MIME DB classes to libbe_build
* This pulls in some more stuff, like libicon and agg which are also included in libbe_build, now. * Update a few libbe_build classes and headers needed
Add private MIME DB classes to libbe_build
* This pulls in some more stuff, like libicon and agg which are also included in libbe_build, now. * Update a few libbe_build classes and headers needed to get things building. * This likely breaks the <build>mimeset build on Haiku.
show more ...
|