#8434: Building to GPT disks may write the wrong partition offset under Linux ----------------------------+---------------------------- Reporter: tqh | Owner: bonefish Type: bug | Status: new Priority: normal | Milestone: R1 Component: Build System | Version: R1/Development Resolution: | Keywords: Blocked By: | Blocking: Has a Patch: 1 | Platform: All ----------------------------+---------------------------- Comment (by bonefish): Here you go: - The indentation isn't correct. Should be one tab per indentation level (set to 4 characters width -- relevant for the line length limit). - If you only use kGPTSignatureSize in this one method, there's no reason to expose it in the header (unless it's intended to be used elsewhere in the future). Also, why make a constant for the size, but inline the signature string itself? I would define both as constants either directly in the method before their use or at the beginning of the source file. - There should be a space after `//`. - When you look at the rest of the source file, you'll notice that the source is formatted more loosely, using single blank lines to separate code blocks from each other. There should be at least one blank line to separate the new code from the preceding block. I would also add another one before the second (top level) `if` block. - Generally the "early return on error" style is preferred. The existing code was written before that style was embraced, but new code should follow it. E.g. in this case it would be preferable to rewrite the previous block to do that too, so your code isn't executed unnecessarily. Also, the way the `read_pos()` result is processed is not correct. If it's just a short read (i.e. no error) `errno` will not have been set and the assumption that it is `B_OK` is incorrect. Under the assumption that `toRead` doesn't overflow `ssize_t`, that should better be done like: {{{ ssize_t bytesRead = read_pos(...); if (bytesRead != (ssize_t)(toRead)) return bytesRead < 0 ? errno : B_IO_ERROR; }}} - The `_BOOT_MODE` exception is no longer necessary. The boot loader's `read_pos()` has been fixed to set `errno` correctly. - Using "early return on error" style also makes it unnecessary to initialize `gptSignature`. - The first `if` line is too long. The limit is 80 columns. - Using `strcmp()` is incorrect. `gptSignature` is only 8 bytes wide, but `strcmp()` will compare 9 bytes, including the terminating null character. If the null character is part of the signature, `kGPTSignatureSize` needs to be adjusted. In either case I would prefer `memcpy()` for the comparison. -- Ticket URL: <http://dev.haiku-os.org/ticket/8434#comment:22> Haiku <http://dev.haiku-os.org> Haiku - the operating system.