Change History (3)

comment:1 Changed 4 years ago by Дмитрий Свиридкин

Version: 1.02.0

comment:2 Changed 4 years ago by Дмитрий Свиридкин

Owner: changed from Дмитрий Свиридкин to Анна Михайлова
Type: ожидается проверкаожидаются исправления

Заголовок битый. 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

comment:3 Changed 4 years ago by Дмитрий Свиридкин

Resolution: задача сдана
Status: assignedclosed
Note: See TracTickets for help on using tickets.