🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: comp.std.c
Article #3342

Re: Struct hack one last time (one last time)

#3342
From: Mark Brader
Date: Fri, 08 Jan 1993 06:59
38 lines
1734 bytes
> ... Again, the basic question is still unresolved here: can a conversion
> from one pointer type to another affect bytes other than those
> where the pointer variable is stored?

There is nothing in the standard to justify such an action, so it
would be permissible only under the "'as if' rule".  It could, for
example, modify bytes that the program mustn't read because the
behavior would be undefined, such as the bytes of an object of
indeterminate value.  It could modify the bytes of a volatile object.
But it could NOT modify some arbitrary object with a well-defined
value that the program correctly expects to persist!

In particular, it could not modify padding at the end of a struct,
precisely *because* it would break the struct hack.  Another example
of code that would break is:

	struct st {
		/* anything */
	} *stp;
	union {
		struct st st;
		char chch[sizeof(struct st)];
	} uu;
	void *vp = &uu;
	int i;

	for (i = 0; i < sizeof uu.chch; ++i)
		uu.chch[i] = '#';
	stp = vp;
	for (i = 0; i < sizeof uu.chch; ++i)
		assert (uu.chch[i] == '#');

-- 
Mark Brader            \ "It's not in the slightest bit harder to write Fortran
SoftQuad Inc., Toronto  \ or Basic programs in C++ or Smalltalk than it is
utzoo!sq!msb, msb@sq.com \ to write them in C or Pascal."   -- Peter da Silva

This article is in the public domain.
Technical Details
Message-ID: <1993Jan8.065947.29719@sq.sq.com>
Path: arc1-ca.pugleaf.net!sparky!uunet!uunet.ca!wildcan!sq!msb
References: <1993Jan7.221207.13818@leland.Stanford.EDU>

Show Full Headers
Complete Article Headers
Newsgroups: comp.std.c
Path: arc1-ca.pugleaf.net!sparky!uunet!uunet.ca!wildcan!sq!msb
From: msb@sq.sq.com (Mark Brader)
Subject: Re: Struct hack one last time (one last time)
Message-ID: <1993Jan8.065947.29719@sq.sq.com>
Organization: SoftQuad Inc., Toronto, Canada
References: <1993Jan7.221207.13818@leland.Stanford.EDU>
Date: Fri, 8 Jan 93 06:59:47 GMT
Lines: 38