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

Re: Fix big left-shifts of unsigned char

From
Linus Torvalds <torvalds@linux-foundation.org>
Date
Jun 18, 2009, 16:08 UTC
Message-ID
<alpine.LFD.2.01.0906180856420.16802@localhost.localdomain>
In-Reply-To
<alpine.DEB.1.00.0906181012050.4848@intel-tinevez-2-302>
On Thu, 18 Jun 2009, Johannes Schindelin wrote:
> 
> I wonder if there is a mode of 'sparse' which could spot these buggers.
Hmm. A very quick hack gets me (this is _after_ my patch):
	diffcore-delta.c:53:24: warning: Signed left-shift
	diffcore-delta.c:58:21: warning: Signed left-shift
	diffcore-delta.c:88:21: warning: Signed left-shift
which are all of the type "<< alloc_log", and not very interesting.
	read-cache.c:1155:17: warning: Signed left-shift

This one is "real", and I noticed it in my earlier greps, but we don't care (it's the CACHE_EXT_TREE/CACHE_EXT() matching, and it's all done in "int", and the only case we care about is a non-signed case anyway)

	imap-send.c:785:52: warning: Signed left-shift
	imap-send.c:1190:35: warning: Signed left-shift

These are both "real", but we're only working on "unsigned" so we don't really care.

	builtin-rev-list.c:201:21: warning: Signed left-shift

this is exp2i(), and it returns 'int', and wouldn't work for big left shifts anyway.

And just to see that my sparse logic actually worked, _without_ the patch I sent to fix left-shifts, I got these:

	base85.c:95:38: warning: Signed left-shift		(fixed)
	diffcore-delta.c:53:24: warning: Signed left-shift
	diffcore-delta.c:58:21: warning: Signed left-shift
	diffcore-delta.c:88:21: warning: Signed left-shift
	delta.h:98:42: warning: Signed left-shift		(fixed)
	delta.h:98:42: warning: Signed left-shift		(dup - inline)
	patch-delta.c:47:63: warning: Signed left-shift		(fixed)
	read-cache.c:1155:17: warning: Signed left-shift
	sha1_file.c:1179:39: warning: Signed left-shift		(fixed)
	delta.h:98:42: warning: Signed left-shift		(dup - inline)
	delta.h:98:42: warning: Signed left-shift		(dup - inline)
	imap-send.c:785:52: warning: Signed left-shift
	imap-send.c:1190:35: warning: Signed left-shift
	builtin-rev-list.c:201:21: warning: Signed left-shift
	builtin-unpack-objects.c:441:39: warning: Signed left-shift (fixed)

just to verify that my sparse checker actually found the ones the patch modified.

			Linus
Previous: Junio C HamanoNext: Johannes Schindelin
Message 16 of 23 in “Cast things properly to handle >2G files.”
  1. Cast things properly to handle >2G files.Alfred M. Szmidt, Jun 14, 2009
  2. Johannes SchindelinJun 14, 2009
  3. Nicolas PitreJun 15, 2009
  4. Alfred M. SzmidtJun 15, 2009
  5. Junio C HamanoJun 15, 2009
  6. Johannes SchindelinJun 15, 2009
  7. Linus TorvaldsJun 15, 2009
  8. Alfred M. SzmidtJun 17, 2009
  9. Linus TorvaldsJun 17, 2009
  10. Alfred M. SzmidtJun 17, 2009
  11. Linus TorvaldsJun 17, 2009
  12. Junio C HamanoJun 17, 2009
  13. Fix big left-shifts of unsigned charLinus Torvalds, Jun 18, 2009
  14. Johannes SchindelinJun 18, 2009
  15. Junio C HamanoJun 18, 2009
  16. Linus TorvaldsJun 18, 2009
  17. Johannes SchindelinJun 18, 2009
  18. Linus TorvaldsJun 18, 2009
  19. Fix various sparse warnings in the git source codeLinus Torvalds, Jun 18, 2009
  20. Matthieu MoyJun 18, 2009
  21. Linus TorvaldsJun 18, 2009
  22. Linus TorvaldsJun 18, 2009
  23. Linus TorvaldsJun 17, 2009

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.