git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH 5/6] convert object type handling from a string to a number

From
Linus Torvalds <torvalds@linux-foundation.org>
Date
Feb 27, 2007, 16:24 UTC
Message-ID
<Pine.LNX.4.64.0702270816350.12485@woody.linux-foundation.org>
In-Reply-To
<alpine.LRH.0.82.0702270856360.29426@xanadu.home>
On Tue, 27 Feb 2007, Nicolas Pitre wrote:
Show 5 quoted lines
> > 
> > I am wondering if "enum object_type" and signed comparison here
> > are compatible.
> 
> Enums are signed as far as I know.
No they are not.

"enums" are traditionally "int", but it's not a requirement, and the technical C requirement is that they be "an integral size sufficiently large to hold all the possible values".

In other words, with a small set of values, it's entirely possible that the integral type in question be "unsigned char", for example.

It so happens that gcc will never *by*default* pick such a type for the particular set of values you have. By default (to match traditions) gcc will always pick "int" (or, thanks to a gcc extension, a bigger type if the values require it), but if you pass it "-fshort-enums" it will pick a smaller type.

And yes, it will actually pick "unsigned char", I think. Try it to be sure.

So to be portable, and to be safe, you really should make the error values part of the enum, ie you should add a

	OBJ_ERROR = -1,
if you want to make sure that the enum really can hold a negative number!

(In fact, on some embedded platforms, "-fshort-enums" is actually on by default - in order to keep data structures smaller)

		Linus
Previous: Nicolas PitreNext: Nicolas Pitre
Message 12 of 16 in “various cleanups”
  1. Nicolas PitreFeb 26, 2007
  2. 1/6 sha1_file.c: cleanup hdr usageNicolas Pitre, Feb 26, 2007
  3. 2/6 sha1_file.c: cleanup "offset" usageNicolas Pitre, Feb 26, 2007
  4. 3/6 sha1_file.c: don't ignore an error condition in sha1_loose_object_info()Nicolas Pitre, Feb 26, 2007
  5. 4/6 formalize typename(), and add its reverse type_from_string()Nicolas Pitre, Feb 26, 2007
  6. 5/6 convert object type handling from a string to a numberNicolas Pitre, Feb 26, 2007
  7. 6/6 get rid of lookup_object_type()Nicolas Pitre, Feb 26, 2007
  8. Junio C HamanoFeb 27, 2007
  9. Junio C HamanoFeb 27, 2007
  10. Nicolas PitreFeb 27, 2007
  11. Nicolas PitreFeb 27, 2007
  12. Linus TorvaldsFeb 27, 2007
  13. Nicolas PitreFeb 27, 2007
  14. Shawn O. PearceFeb 27, 2007
  15. Nicolas PitreFeb 27, 2007
  16. Shawn O. PearceFeb 27, 2007

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.