config: avoid "write_in_full(fd, buf, len) != len" pattern
authorPhillip Wood <phillip.wood@dunelm.org.uk>
Wed, 15 Nov 2017 12:40:43 +0000 (12:40 +0000)
committerJunio C Hamano <gitster@pobox.com>
Thu, 16 Nov 2017 01:36:16 +0000 (10:36 +0900)
As explained in commit 06f46f237 (avoid "write_in_full(fd, buf, len)
!= len" pattern, 2017–09–13) the return value of write_in_full() is
either -1 or the requested number of bytes. As such comparing the
return value to an unsigned value such as strbuf.len will fail to
catch errors. Change the code to use the preferred '< 0' check.

Signed-off-by: Phillip Wood <phillip.wood@dunelm.org.uk>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
config.c
index d0d5aa1dc59110e22150700103a5bd2c684937b8..4457aec089766710a69c45138c87e3c7c2ebd43d 100644 (file)
--- a/config.c
+++ b/config.c
@@ -2700,7 +2700,7 @@ static int git_config_copy_or_rename_section_in_file(const char *config_filename
                         * multiple [branch "$name"] sections.
                         */
                        if (copystr.len > 0) {
-                               if (write_in_full(out_fd, copystr.buf, copystr.len) != copystr.len) {
+                               if (write_in_full(out_fd, copystr.buf, copystr.len) < 0) {
                                        ret = write_error(get_lock_file_path(lock));
                                        goto out;
                                }
@@ -2763,7 +2763,7 @@ static int git_config_copy_or_rename_section_in_file(const char *config_filename
         * logic in the loop above.
         */
        if (copystr.len > 0) {
-               if (write_in_full(out_fd, copystr.buf, copystr.len) != copystr.len) {
+               if (write_in_full(out_fd, copystr.buf, copystr.len) < 0) {
                        ret = write_error(get_lock_file_path(lock));
                        goto out;
                }