Opened 4 years ago
Closed 4 years ago
#509 closed ожидаются исправления (задача сдана)
HW #1
Reported by: | Анна Михайлова | Owned by: | Анна Михайлова |
---|---|---|---|
Component: | HW #1 (BMP) | Version: | 2.0 |
Keywords: | Cc: |
Description
Change History (3)
comment:1 Changed 4 years ago by
Version: | 1.0 → 2.0 |
---|
comment:2 Changed 4 years ago by
Owner: | changed from Дмитрий Свиридкин to Анна Михайлова |
---|---|
Type: | ожидается проверка → ожидаются исправления |
comment:3 Changed 4 years ago by
Resolution: | → задача сдана |
---|---|
Status: | assigned → closed |
Note: See
TracTickets for help on using
tickets.
Заголовок битый. 36й(? странно, обычно 34й) байт.
На неквадратных картинках происходит что-то страшное:
==6986== Syscall param write(buf) points to uninitialised byte(s)
==6986== at 0x4994024: write (write.c:26)
==6986== by 0x49154FC: _IO_file_write@@GLIBC_2.2.5 (fileops.c:1188)
==6986== by 0x4916C30: new_do_write (fileops.c:456)
==6986== by 0x4916C30: _IO_new_do_write (fileops.c:433)
==6986== by 0x4916C30: _IO_do_write@@GLIBC_2.2.5 (fileops.c:430)
==6986== by 0x4915BD4: _IO_new_file_xsputn (fileops.c:1251)
==6986== by 0x4915BD4: _IO_file_xsputn@@GLIBC_2.2.5 (fileops.c:1204)
==6986== by 0x4909D97: fwrite (iofwrite.c:39)
==6986== by 0x1098E7: save_bmp (bmp.c:111)
==6986== by 0x109A93: main (main.c:11)
==6986== Address 0x4e32cfc is 1,884 bytes inside a block of size 4,096 alloc'd
==6986== at 0x483874F: malloc (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so)
==6986== by 0x490885B: _IO_file_doallocate (filedoalloc.c:101)
==6986== by 0x49180B1: _IO_doallocbuf (genops.c:347)
==6986== by 0x4917197: _IO_file_overflow@@GLIBC_2.2.5 (fileops.c:752)
==6986== by 0x4915BD4: _IO_new_file_xsputn (fileops.c:1251)
==6986== by 0x4915BD4: _IO_file_xsputn@@GLIBC_2.2.5 (fileops.c:1204)
==6986== by 0x4909D97: fwrite (iofwrite.c:39)
==6986== by 0x109888: save_bmp (bmp.c:105)
==6986== by 0x109A93: main (main.c:11)
==6986==
==6986== Syscall param write(buf) points to uninitialised byte(s)
==6986== at 0x4994024: write (write.c:26)
==6986== by 0x49154FC: _IO_file_write@@GLIBC_2.2.5 (fileops.c:1188)
==6986== by 0x4916C30: new_do_write (fileops.c:456)
==6986== by 0x4916C30: _IO_new_do_write (fileops.c:433)
==6986== by 0x4916C30: _IO_do_write@@GLIBC_2.2.5 (fileops.c:430)
==6986== by 0x4915FCF: _IO_file_close_it@@GLIBC_2.2.5 (fileops.c:136)
==6986== by 0x49089B2: fclose@@GLIBC_2.2.5 (iofclose.c:53)
==6986== by 0x109920: save_bmp (bmp.c:116)
==6986== by 0x109A93: main (main.c:11)
==6986== Address 0x4e32bdc is 1,596 bytes inside a block of size 4,096 alloc'd
==6986== at 0x483874F: malloc (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so)
==6986== by 0x490885B: _IO_file_doallocate (filedoalloc.c:101)
==6986== by 0x49180B1: _IO_doallocbuf (genops.c:347)
==6986== by 0x4917197: _IO_file_overflow@@GLIBC_2.2.5 (fileops.c:752)
==6986== by 0x4915BD4: _IO_new_file_xsputn (fileops.c:1251)
==6986== by 0x4915BD4: _IO_file_xsputn@@GLIBC_2.2.5 (fileops.c:1204)
==6986== by 0x4909D97: fwrite (iofwrite.c:39)
==6986== by 0x109888: save_bmp (bmp.c:105)
==6986== by 0x109A93: main (main.c:11)
pragma pack лучше сделать push в начале и pop в конце. Так явно будет видно, что выравнивание применяется только для одной структуры.
Код, обновляющий заголовок дублируется.
Количество аргументов не проверяется
8 + 8