Skip to content

Commit e50d401

Browse files
committed
Ensure SIZE_MAX can be used throughout our code.
Pre-C99 platforms may lack <stdint.h> and thereby SIZE_MAX. We have a couple of places using the hack "(size_t) -1" as a fallback, but it wasn't universally available; which means the code added in commit 2e70d6b fails to compile everywhere. Move that hack to c.h so that we can rely on having SIZE_MAX everywhere. Per discussion, it'd be a good idea to make the macro's value safe for use in #if-tests, but that will take a bit more work. This is just a quick expedient to get the buildfarm green again. Back-patch to all supported branches, like the previous commit. Discussion: https://postgr.es/m/15883.1504278595@sss.pgh.pa.us
1 parent 9b1d485 commit e50d401

File tree

3 files changed

+6
-5
lines changed

3 files changed

+6
-5
lines changed

src/include/c.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -340,6 +340,11 @@ typedef unsigned PG_INT128_TYPE uint128;
340340
#define PG_INT64_MAX INT64CONST(0x7FFFFFFFFFFFFFFF)
341341
#define PG_UINT64_MAX UINT64CONST(0xFFFFFFFFFFFFFFFF)
342342

343+
/* Max value of size_t might also be missing if we don't have stdint.h */
344+
#ifndef SIZE_MAX
345+
#define SIZE_MAX ((size_t) -1)
346+
#endif
347+
343348
/* Select timestamp representation (float8 or int64) */
344349
#ifdef USE_INTEGER_DATETIMES
345350
#define HAVE_INT64_TIMESTAMP

src/include/utils/memutils.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@
4141

4242
#define AllocSizeIsValid(size) ((Size) (size) <= MaxAllocSize)
4343

44-
#define MaxAllocHugeSize ((Size) -1 >> 1) /* SIZE_MAX / 2 */
44+
#define MaxAllocHugeSize (SIZE_MAX / 2)
4545

4646
#define AllocHugeSizeIsValid(size) ((Size) (size) <= MaxAllocHugeSize)
4747

src/timezone/private.h

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -48,10 +48,6 @@
4848
/* Unlike <ctype.h>'s isdigit, this also works if c < 0 | c > UCHAR_MAX. */
4949
#define is_digit(c) ((unsigned)(c) - '0' <= 9)
5050

51-
#ifndef SIZE_MAX
52-
#define SIZE_MAX ((size_t) -1)
53-
#endif
54-
5551
/*
5652
* SunOS 4.1.1 libraries lack remove.
5753
*/

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy