Changeset 561 for trunk/src/3rdparty/libpng/pngpread.c
- Timestamp:
- Feb 11, 2010, 11:19:06 PM (15 years ago)
- Location:
- trunk
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk
-
Property svn:mergeinfo
set to (toggle deleted branches)
/branches/vendor/nokia/qt/4.6.1 merged eligible /branches/vendor/nokia/qt/current merged eligible /branches/vendor/trolltech/qt/current 3-149
-
Property svn:mergeinfo
set to (toggle deleted branches)
-
trunk/src/3rdparty/libpng/pngpread.c
r2 r561 2 2 /* pngpread.c - read a png file in push mode 3 3 * 4 * Last changed in libpng 1.2.27 [April 29, 2008] 5 * For conditions of distribution and use, see copyright notice in png.h 6 * Copyright (c) 1998-2008 Glenn Randers-Pehrson 4 * Last changed in libpng 1.2.38 [July 16, 2009] 5 * Copyright (c) 1998-2009 Glenn Randers-Pehrson 7 6 * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger) 8 7 * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.) 8 * 9 * This code is released under the libpng license. 10 * For conditions of distribution and use, see the disclaimer 11 * and license in png.h 9 12 */ 10 13 11 14 #define PNG_INTERNAL 12 15 #include "png.h" 13 14 16 #ifdef PNG_PROGRESSIVE_READ_SUPPORTED 15 17 16 /* push model modes */18 /* Push model modes */ 17 19 #define PNG_READ_SIG_MODE 0 18 20 #define PNG_READ_CHUNK_MODE 1 … … 29 31 png_bytep buffer, png_size_t buffer_size) 30 32 { 31 if(png_ptr == NULL || info_ptr == NULL) return; 33 if (png_ptr == NULL || info_ptr == NULL) 34 return; 35 32 36 png_push_restore_buffer(png_ptr, buffer, buffer_size); 33 37 … … 44 48 png_process_some_data(png_structp png_ptr, png_infop info_ptr) 45 49 { 46 if(png_ptr == NULL) return; 50 if (png_ptr == NULL) 51 return; 52 47 53 switch (png_ptr->process_mode) 48 54 { … … 52 58 break; 53 59 } 60 54 61 case PNG_READ_CHUNK_MODE: 55 62 { … … 57 64 break; 58 65 } 66 59 67 case PNG_READ_IDAT_MODE: 60 68 { … … 62 70 break; 63 71 } 72 64 73 #if defined(PNG_READ_tEXt_SUPPORTED) 65 74 case PNG_READ_tEXt_MODE: … … 68 77 break; 69 78 } 79 70 80 #endif 71 81 #if defined(PNG_READ_zTXt_SUPPORTED) … … 75 85 break; 76 86 } 87 77 88 #endif 78 89 #if defined(PNG_READ_iTXt_SUPPORTED) … … 82 93 break; 83 94 } 95 84 96 #endif 85 97 case PNG_SKIP_MODE: … … 88 100 break; 89 101 } 102 90 103 default: 91 104 { … … 115 128 png_push_fill_buffer(png_ptr, &(info_ptr->signature[num_checked]), 116 129 num_to_check); 117 png_ptr->sig_bytes = (png_byte)(png_ptr->sig_bytes +num_to_check);130 png_ptr->sig_bytes = (png_byte)(png_ptr->sig_bytes + num_to_check); 118 131 119 132 if (png_sig_cmp(info_ptr->signature, num_checked, num_to_check)) … … 211 224 212 225 png_push_fill_buffer(png_ptr, chunk_length, 4); 213 png_ptr->push_length = png_get_uint_31(png_ptr, chunk_length);226 png_ptr->push_length = png_get_uint_31(png_ptr, chunk_length); 214 227 png_reset_crc(png_ptr); 215 228 png_crc_read(png_ptr, png_ptr->chunk_name, 4); 229 png_check_chunk_name(png_ptr, png_ptr->chunk_name); 216 230 png_ptr->mode |= PNG_HAVE_CHUNK_HEADER; 217 231 } 218 232 219 233 if (!png_memcmp(png_ptr->chunk_name, png_IDAT, 4)) 220 if (png_ptr->mode & PNG_AFTER_IDAT)234 if (png_ptr->mode & PNG_AFTER_IDAT) 221 235 png_ptr->mode |= PNG_HAVE_CHUNK_AFTER_IDAT; 222 236 223 237 if (!png_memcmp(png_ptr->chunk_name, png_IHDR, 4)) 224 238 { 225 if (png_ptr->push_length + 4 > png_ptr->buffer_size) 226 { 227 if (png_ptr->push_length != 13) 228 png_error(png_ptr, "Invalid IHDR length"); 229 png_push_save_buffer(png_ptr); 230 return; 231 } 239 if (png_ptr->push_length != 13) 240 png_error(png_ptr, "Invalid IHDR length"); 241 242 if (png_ptr->push_length + 4 > png_ptr->buffer_size) 243 { 244 png_push_save_buffer(png_ptr); 245 return; 246 } 247 232 248 png_handle_IHDR(png_ptr, info_ptr, png_ptr->push_length); 233 249 } 250 234 251 else if (!png_memcmp(png_ptr->chunk_name, png_IEND, 4)) 235 252 { … … 239 256 return; 240 257 } 258 241 259 png_handle_IEND(png_ptr, info_ptr, png_ptr->push_length); 242 260 … … 244 262 png_push_have_end(png_ptr, info_ptr); 245 263 } 264 246 265 #ifdef PNG_HANDLE_AS_UNKNOWN_SUPPORTED 247 266 else if (png_handle_as_unknown(png_ptr, png_ptr->chunk_name)) … … 252 271 return; 253 272 } 273 254 274 if (!png_memcmp(png_ptr->chunk_name, png_IDAT, 4)) 255 275 png_ptr->mode |= PNG_HAVE_IDAT; 276 256 277 png_handle_unknown(png_ptr, info_ptr, png_ptr->push_length); 278 257 279 if (!png_memcmp(png_ptr->chunk_name, png_PLTE, 4)) 258 280 png_ptr->mode |= PNG_HAVE_PLTE; 281 259 282 else if (!png_memcmp(png_ptr->chunk_name, png_IDAT, 4)) 260 283 { 261 284 if (!(png_ptr->mode & PNG_HAVE_IHDR)) 262 285 png_error(png_ptr, "Missing IHDR before IDAT"); 286 263 287 else if (png_ptr->color_type == PNG_COLOR_TYPE_PALETTE && 264 288 !(png_ptr->mode & PNG_HAVE_PLTE)) … … 266 290 } 267 291 } 292 268 293 #endif 269 294 else if (!png_memcmp(png_ptr->chunk_name, png_PLTE, 4)) … … 276 301 png_handle_PLTE(png_ptr, info_ptr, png_ptr->push_length); 277 302 } 303 278 304 else if (!png_memcmp(png_ptr->chunk_name, png_IDAT, 4)) 279 305 { … … 282 308 * is called after the image has been read - we have an error). 283 309 */ 284 if (!(png_ptr->mode & PNG_HAVE_IHDR)) 285 png_error(png_ptr, "Missing IHDR before IDAT"); 286 else if (png_ptr->color_type == PNG_COLOR_TYPE_PALETTE && 287 !(png_ptr->mode & PNG_HAVE_PLTE)) 288 png_error(png_ptr, "Missing PLTE before IDAT"); 310 311 if (!(png_ptr->mode & PNG_HAVE_IHDR)) 312 png_error(png_ptr, "Missing IHDR before IDAT"); 313 314 else if (png_ptr->color_type == PNG_COLOR_TYPE_PALETTE && 315 !(png_ptr->mode & PNG_HAVE_PLTE)) 316 png_error(png_ptr, "Missing PLTE before IDAT"); 289 317 290 318 if (png_ptr->mode & PNG_HAVE_IDAT) 291 319 { 292 320 if (!(png_ptr->mode & PNG_HAVE_CHUNK_AFTER_IDAT)) 293 if (png_ptr->push_length == 0)294 return;321 if (png_ptr->push_length == 0) 322 return; 295 323 296 324 if (png_ptr->mode & PNG_AFTER_IDAT) … … 306 334 return; 307 335 } 336 308 337 #if defined(PNG_READ_gAMA_SUPPORTED) 309 338 else if (!png_memcmp(png_ptr->chunk_name, png_gAMA, 4)) … … 314 343 return; 315 344 } 345 316 346 png_handle_gAMA(png_ptr, info_ptr, png_ptr->push_length); 317 347 } 348 318 349 #endif 319 350 #if defined(PNG_READ_sBIT_SUPPORTED) … … 325 356 return; 326 357 } 358 327 359 png_handle_sBIT(png_ptr, info_ptr, png_ptr->push_length); 328 360 } 361 329 362 #endif 330 363 #if defined(PNG_READ_cHRM_SUPPORTED) … … 336 369 return; 337 370 } 371 338 372 png_handle_cHRM(png_ptr, info_ptr, png_ptr->push_length); 339 373 } 374 340 375 #endif 341 376 #if defined(PNG_READ_sRGB_SUPPORTED) … … 347 382 return; 348 383 } 384 349 385 png_handle_sRGB(png_ptr, info_ptr, png_ptr->push_length); 350 386 } 387 351 388 #endif 352 389 #if defined(PNG_READ_iCCP_SUPPORTED) … … 358 395 return; 359 396 } 397 360 398 png_handle_iCCP(png_ptr, info_ptr, png_ptr->push_length); 361 399 } 400 362 401 #endif 363 402 #if defined(PNG_READ_sPLT_SUPPORTED) … … 369 408 return; 370 409 } 410 371 411 png_handle_sPLT(png_ptr, info_ptr, png_ptr->push_length); 372 412 } 413 373 414 #endif 374 415 #if defined(PNG_READ_tRNS_SUPPORTED) … … 380 421 return; 381 422 } 423 382 424 png_handle_tRNS(png_ptr, info_ptr, png_ptr->push_length); 383 425 } 426 384 427 #endif 385 428 #if defined(PNG_READ_bKGD_SUPPORTED) … … 391 434 return; 392 435 } 436 393 437 png_handle_bKGD(png_ptr, info_ptr, png_ptr->push_length); 394 438 } 439 395 440 #endif 396 441 #if defined(PNG_READ_hIST_SUPPORTED) … … 402 447 return; 403 448 } 449 404 450 png_handle_hIST(png_ptr, info_ptr, png_ptr->push_length); 405 451 } 452 406 453 #endif 407 454 #if defined(PNG_READ_pHYs_SUPPORTED) … … 413 460 return; 414 461 } 462 415 463 png_handle_pHYs(png_ptr, info_ptr, png_ptr->push_length); 416 464 } 465 417 466 #endif 418 467 #if defined(PNG_READ_oFFs_SUPPORTED) … … 424 473 return; 425 474 } 475 426 476 png_handle_oFFs(png_ptr, info_ptr, png_ptr->push_length); 427 477 } 428 478 #endif 479 429 480 #if defined(PNG_READ_pCAL_SUPPORTED) 430 481 else if (!png_memcmp(png_ptr->chunk_name, png_pCAL, 4)) … … 435 486 return; 436 487 } 488 437 489 png_handle_pCAL(png_ptr, info_ptr, png_ptr->push_length); 438 490 } 491 439 492 #endif 440 493 #if defined(PNG_READ_sCAL_SUPPORTED) … … 446 499 return; 447 500 } 501 448 502 png_handle_sCAL(png_ptr, info_ptr, png_ptr->push_length); 449 503 } 504 450 505 #endif 451 506 #if defined(PNG_READ_tIME_SUPPORTED) … … 457 512 return; 458 513 } 514 459 515 png_handle_tIME(png_ptr, info_ptr, png_ptr->push_length); 460 516 } 517 461 518 #endif 462 519 #if defined(PNG_READ_tEXt_SUPPORTED) … … 468 525 return; 469 526 } 527 470 528 png_push_handle_tEXt(png_ptr, info_ptr, png_ptr->push_length); 471 529 } 530 472 531 #endif 473 532 #if defined(PNG_READ_zTXt_SUPPORTED) … … 479 538 return; 480 539 } 540 481 541 png_push_handle_zTXt(png_ptr, info_ptr, png_ptr->push_length); 482 542 } 543 483 544 #endif 484 545 #if defined(PNG_READ_iTXt_SUPPORTED) … … 490 551 return; 491 552 } 553 492 554 png_push_handle_iTXt(png_ptr, info_ptr, png_ptr->push_length); 493 555 } 556 494 557 #endif 495 558 else … … 566 629 png_bytep ptr; 567 630 568 if(png_ptr == NULL) return; 631 if (png_ptr == NULL) 632 return; 633 569 634 ptr = buffer; 570 635 if (png_ptr->save_buffer_size) … … 590 655 if (length < png_ptr->current_buffer_size) 591 656 save_size = length; 657 592 658 else 593 659 save_size = png_ptr->current_buffer_size; … … 607 673 if (png_ptr->save_buffer_ptr != png_ptr->save_buffer) 608 674 { 609 png_size_t i, istop;675 png_size_t i, istop; 610 676 png_bytep sp; 611 677 png_bytep dp; … … 630 696 png_error(png_ptr, "Potential overflow of save_buffer"); 631 697 } 698 632 699 new_max = png_ptr->save_buffer_size + png_ptr->current_buffer_size + 256; 633 700 old_buffer = png_ptr->save_buffer; … … 676 743 677 744 png_push_fill_buffer(png_ptr, chunk_length, 4); 678 png_ptr->push_length = png_get_uint_31(png_ptr, chunk_length);745 png_ptr->push_length = png_get_uint_31(png_ptr, chunk_length); 679 746 png_reset_crc(png_ptr); 680 747 png_crc_read(png_ptr, png_ptr->chunk_name, 4); … … 698 765 { 699 766 save_size = (png_size_t)png_ptr->idat_size; 700 /* check for overflow */ 701 if((png_uint_32)save_size != png_ptr->idat_size) 767 768 /* Check for overflow */ 769 if ((png_uint_32)save_size != png_ptr->idat_size) 702 770 png_error(png_ptr, "save_size overflowed in pngpread"); 703 771 } … … 706 774 707 775 png_calculate_crc(png_ptr, png_ptr->save_buffer_ptr, save_size); 776 708 777 if (!(png_ptr->flags & PNG_FLAG_ZLIB_FINISHED)) 709 778 png_process_IDAT_data(png_ptr, png_ptr->save_buffer_ptr, save_size); 779 710 780 png_ptr->idat_size -= save_size; 711 781 png_ptr->buffer_size -= save_size; … … 720 790 { 721 791 save_size = (png_size_t)png_ptr->idat_size; 722 /* check for overflow */ 723 if((png_uint_32)save_size != png_ptr->idat_size) 792 793 /* Check for overflow */ 794 if ((png_uint_32)save_size != png_ptr->idat_size) 724 795 png_error(png_ptr, "save_size overflowed in pngpread"); 725 796 } … … 761 832 png_ptr->zstream.next_in = buffer; 762 833 png_ptr->zstream.avail_in = (uInt)buffer_length; 763 for (;;)834 for (;;) 764 835 { 765 836 ret = inflate(&png_ptr->zstream, Z_PARTIAL_FLUSH); … … 770 841 if (png_ptr->zstream.avail_in) 771 842 png_error(png_ptr, "Extra compressed data"); 843 772 844 if (!(png_ptr->zstream.avail_out)) 773 845 { … … 781 853 else if (ret == Z_BUF_ERROR) 782 854 break; 855 783 856 else 784 857 png_error(png_ptr, "Decompression Error"); … … 802 875 png_ptr->zstream.next_out = png_ptr->row_buf; 803 876 } 877 804 878 else 805 879 break; … … 830 904 831 905 #if defined(PNG_READ_INTERLACING_SUPPORTED) 832 /* blow up interlaced rows to full size */906 /* Blow up interlaced rows to full size */ 833 907 if (png_ptr->interlaced && (png_ptr->transformations & PNG_INTERLACE)) 834 908 { … … 848 922 { 849 923 png_push_have_row(png_ptr, png_ptr->row_buf + 1); 850 png_read_push_finish_row(png_ptr); /* updates png_ptr->pass */ 851 } 852 if (png_ptr->pass == 2) /* pass 1 might be empty */ 924 png_read_push_finish_row(png_ptr); /* Updates png_ptr->pass */ 925 } 926 927 if (png_ptr->pass == 2) /* Pass 1 might be empty */ 853 928 { 854 929 for (i = 0; i < 4 && png_ptr->pass == 2; i++) … … 858 933 } 859 934 } 935 860 936 if (png_ptr->pass == 4 && png_ptr->height <= 4) 861 937 { … … 866 942 } 867 943 } 944 868 945 if (png_ptr->pass == 6 && png_ptr->height <= 4) 869 946 { … … 871 948 png_read_push_finish_row(png_ptr); 872 949 } 950 873 951 break; 874 952 } 953 875 954 case 1: 876 955 { … … 881 960 png_read_push_finish_row(png_ptr); 882 961 } 883 if (png_ptr->pass == 2) /* skip top 4 generated rows */ 962 963 if (png_ptr->pass == 2) /* Skip top 4 generated rows */ 884 964 { 885 965 for (i = 0; i < 4 && png_ptr->pass == 2; i++) … … 889 969 } 890 970 } 971 891 972 break; 892 973 } 974 893 975 case 2: 894 976 { 895 977 int i; 978 896 979 for (i = 0; i < 4 && png_ptr->pass == 2; i++) 897 980 { … … 899 982 png_read_push_finish_row(png_ptr); 900 983 } 984 901 985 for (i = 0; i < 4 && png_ptr->pass == 2; i++) 902 986 { … … 904 988 png_read_push_finish_row(png_ptr); 905 989 } 906 if (png_ptr->pass == 4) /* pass 3 might be empty */ 990 991 if (png_ptr->pass == 4) /* Pass 3 might be empty */ 907 992 { 908 993 for (i = 0; i < 2 && png_ptr->pass == 4; i++) … … 912 997 } 913 998 } 999 914 1000 break; 915 1001 } 1002 916 1003 case 3: 917 1004 { 918 1005 int i; 1006 919 1007 for (i = 0; i < 4 && png_ptr->pass == 3; i++) 920 1008 { … … 922 1010 png_read_push_finish_row(png_ptr); 923 1011 } 924 if (png_ptr->pass == 4) /* skip top two generated rows */ 1012 1013 if (png_ptr->pass == 4) /* Skip top two generated rows */ 925 1014 { 926 1015 for (i = 0; i < 2 && png_ptr->pass == 4; i++) … … 930 1019 } 931 1020 } 1021 932 1022 break; 933 1023 } 1024 934 1025 case 4: 935 1026 { 936 1027 int i; 1028 937 1029 for (i = 0; i < 2 && png_ptr->pass == 4; i++) 938 1030 { … … 940 1032 png_read_push_finish_row(png_ptr); 941 1033 } 1034 942 1035 for (i = 0; i < 2 && png_ptr->pass == 4; i++) 943 1036 { … … 945 1038 png_read_push_finish_row(png_ptr); 946 1039 } 947 if (png_ptr->pass == 6) /* pass 5 might be empty */ 1040 1041 if (png_ptr->pass == 6) /* Pass 5 might be empty */ 948 1042 { 949 1043 png_push_have_row(png_ptr, png_bytep_NULL); 950 1044 png_read_push_finish_row(png_ptr); 951 1045 } 1046 952 1047 break; 953 1048 } 1049 954 1050 case 5: 955 1051 { 956 1052 int i; 1053 957 1054 for (i = 0; i < 2 && png_ptr->pass == 5; i++) 958 1055 { … … 960 1057 png_read_push_finish_row(png_ptr); 961 1058 } 962 if (png_ptr->pass == 6) /* skip top generated row */ 1059 1060 if (png_ptr->pass == 6) /* Skip top generated row */ 963 1061 { 964 1062 png_push_have_row(png_ptr, png_bytep_NULL); 965 1063 png_read_push_finish_row(png_ptr); 966 1064 } 1065 967 1066 break; 968 1067 } … … 971 1070 png_push_have_row(png_ptr, png_ptr->row_buf + 1); 972 1071 png_read_push_finish_row(png_ptr); 1072 973 1073 if (png_ptr->pass != 6) 974 1074 break; 1075 975 1076 png_push_have_row(png_ptr, png_bytep_NULL); 976 1077 png_read_push_finish_row(png_ptr); … … 990 1091 { 991 1092 #ifdef PNG_USE_LOCAL_ARRAYS 992 /* arrays to facilitate easy interlacing - use pass (0 - 6) as index */993 994 /* start of interlace block */1093 /* Arrays to facilitate easy interlacing - use pass (0 - 6) as index */ 1094 1095 /* Start of interlace block */ 995 1096 PNG_CONST int FARDATA png_pass_start[] = {0, 4, 0, 2, 0, 1, 0}; 996 1097 997 /* offset to next interlace block */1098 /* Offset to next interlace block */ 998 1099 PNG_CONST int FARDATA png_pass_inc[] = {8, 8, 4, 4, 2, 2, 1}; 999 1100 1000 /* start of interlace block in the y direction */1101 /* Start of interlace block in the y direction */ 1001 1102 PNG_CONST int FARDATA png_pass_ystart[] = {0, 0, 4, 0, 2, 0, 1}; 1002 1103 1003 /* offset to next interlace block in the y direction */1104 /* Offset to next interlace block in the y direction */ 1004 1105 PNG_CONST int FARDATA png_pass_yinc[] = {8, 8, 8, 4, 4, 2, 2}; 1005 1106 … … 1014 1115 return; 1015 1116 1117 #if defined(PNG_READ_INTERLACING_SUPPORTED) 1016 1118 if (png_ptr->interlaced) 1017 1119 { … … 1021 1123 do 1022 1124 { 1023 int pass; 1024 pass = png_ptr->pass; 1025 pass++; 1026 if ((pass == 1 && png_ptr->width < 5) || 1027 (pass == 3 && png_ptr->width < 3) || 1028 (pass == 5 && png_ptr->width < 2)) 1029 pass++; 1030 1031 if (pass > 7) 1032 pass--; 1033 png_ptr->pass = (png_byte) pass; 1034 if (pass < 7) 1035 { 1036 png_ptr->iwidth = (png_ptr->width + 1037 png_pass_inc[pass] - 1 - 1038 png_pass_start[pass]) / 1039 png_pass_inc[pass]; 1040 1041 png_ptr->irowbytes = PNG_ROWBYTES(png_ptr->pixel_depth, 1042 png_ptr->iwidth) + 1; 1043 1044 if (png_ptr->transformations & PNG_INTERLACE) 1045 break; 1046 1047 png_ptr->num_rows = (png_ptr->height + 1048 png_pass_yinc[pass] - 1 - 1049 png_pass_ystart[pass]) / 1050 png_pass_yinc[pass]; 1051 } 1052 else 1053 break; 1125 png_ptr->pass++; 1126 if ((png_ptr->pass == 1 && png_ptr->width < 5) || 1127 (png_ptr->pass == 3 && png_ptr->width < 3) || 1128 (png_ptr->pass == 5 && png_ptr->width < 2)) 1129 png_ptr->pass++; 1130 1131 if (png_ptr->pass > 7) 1132 png_ptr->pass--; 1133 1134 if (png_ptr->pass >= 7) 1135 break; 1136 1137 png_ptr->iwidth = (png_ptr->width + 1138 png_pass_inc[png_ptr->pass] - 1 - 1139 png_pass_start[png_ptr->pass]) / 1140 png_pass_inc[png_ptr->pass]; 1141 1142 png_ptr->irowbytes = PNG_ROWBYTES(png_ptr->pixel_depth, 1143 png_ptr->iwidth) + 1; 1144 1145 if (png_ptr->transformations & PNG_INTERLACE) 1146 break; 1147 1148 png_ptr->num_rows = (png_ptr->height + 1149 png_pass_yinc[png_ptr->pass] - 1 - 1150 png_pass_ystart[png_ptr->pass]) / 1151 png_pass_yinc[png_ptr->pass]; 1054 1152 1055 1153 } while (png_ptr->iwidth == 0 || png_ptr->num_rows == 0); 1056 1154 } 1155 #endif /* PNG_READ_INTERLACING_SUPPORTED */ 1057 1156 } 1058 1157 … … 1065 1164 { 1066 1165 png_error(png_ptr, "Out of place tEXt"); 1067 info_ptr = info_ptr; /* to quiet some compiler warnings */1166 info_ptr = info_ptr; /* To quiet some compiler warnings */ 1068 1167 } 1069 1168 … … 1080 1179 1081 1180 png_ptr->current_text = (png_charp)png_malloc(png_ptr, 1082 (png_uint_32)(length+1));1181 (png_uint_32)(length + 1)); 1083 1182 png_ptr->current_text[length] = '\0'; 1084 1183 png_ptr->current_text_ptr = png_ptr->current_text; … … 1097 1196 if (png_ptr->buffer_size < png_ptr->current_text_left) 1098 1197 text_size = png_ptr->buffer_size; 1198 1099 1199 else 1100 1200 text_size = png_ptr->current_text_left; 1201 1101 1202 png_crc_read(png_ptr, (png_bytep)png_ptr->current_text_ptr, text_size); 1102 1203 png_ptr->current_text_left -= text_size; … … 1126 1227 1127 1228 for (text = key; *text; text++) 1128 /* empty loop */ ;1229 /* Empty loop */ ; 1129 1230 1130 1231 if (text < key + png_ptr->current_text_size) … … 1161 1262 { 1162 1263 png_error(png_ptr, "Out of place zTXt"); 1163 info_ptr = info_ptr; /* to quiet some compiler warnings */1264 info_ptr = info_ptr; /* To quiet some compiler warnings */ 1164 1265 } 1165 1266 … … 1178 1279 1179 1280 png_ptr->current_text = (png_charp)png_malloc(png_ptr, 1180 (png_uint_32)(length+1));1281 (png_uint_32)(length + 1)); 1181 1282 png_ptr->current_text[length] = '\0'; 1182 1283 png_ptr->current_text_ptr = png_ptr->current_text; … … 1195 1296 if (png_ptr->buffer_size < (png_uint_32)png_ptr->current_text_left) 1196 1297 text_size = png_ptr->buffer_size; 1298 1197 1299 else 1198 1300 text_size = png_ptr->current_text_left; 1301 1199 1302 png_crc_read(png_ptr, (png_bytep)png_ptr->current_text_ptr, text_size); 1200 1303 png_ptr->current_text_left -= text_size; … … 1220 1323 1221 1324 for (text = key; *text; text++) 1222 /* empty loop */ ;1325 /* Empty loop */ ; 1223 1326 1224 1327 /* zTXt can't have zero text */ … … 1232 1335 text++; 1233 1336 1234 if (*text != PNG_TEXT_COMPRESSION_zTXt) /* check compression byte */1337 if (*text != PNG_TEXT_COMPRESSION_zTXt) /* Check compression byte */ 1235 1338 { 1236 1339 png_ptr->current_text = NULL; … … 1269 1372 { 1270 1373 text = (png_charp)png_malloc(png_ptr, 1271 (png_uint_32)(png_ptr->zbuf_size - png_ptr->zstream.avail_out 1272 + key_size + 1)); 1374 (png_uint_32)(png_ptr->zbuf_size 1375 - png_ptr->zstream.avail_out + key_size + 1)); 1376 1273 1377 png_memcpy(text + key_size, png_ptr->zbuf, 1274 1378 png_ptr->zbuf_size - png_ptr->zstream.avail_out); 1379 1275 1380 png_memcpy(text, key, key_size); 1381 1276 1382 text_size = key_size + png_ptr->zbuf_size - 1277 1383 png_ptr->zstream.avail_out; 1384 1278 1385 *(text + text_size) = '\0'; 1279 1386 } … … 1284 1391 tmp = text; 1285 1392 text = (png_charp)png_malloc(png_ptr, text_size + 1286 (png_uint_32)(png_ptr->zbuf_size - png_ptr->zstream.avail_out 1287 + 1)); 1393 (png_uint_32)(png_ptr->zbuf_size 1394 - png_ptr->zstream.avail_out + 1)); 1395 1288 1396 png_memcpy(text, tmp, text_size); 1289 1397 png_free(png_ptr, tmp); 1398 1290 1399 png_memcpy(text + text_size, png_ptr->zbuf, 1291 1400 png_ptr->zbuf_size - png_ptr->zstream.avail_out); 1401 1292 1402 text_size += png_ptr->zbuf_size - png_ptr->zstream.avail_out; 1293 1403 *(text + text_size) = '\0'; … … 1353 1463 { 1354 1464 png_error(png_ptr, "Out of place iTXt"); 1355 info_ptr = info_ptr; /* to quiet some compiler warnings */1465 info_ptr = info_ptr; /* To quiet some compiler warnings */ 1356 1466 } 1357 1467 … … 1368 1478 1369 1479 png_ptr->current_text = (png_charp)png_malloc(png_ptr, 1370 (png_uint_32)(length+1));1480 (png_uint_32)(length + 1)); 1371 1481 png_ptr->current_text[length] = '\0'; 1372 1482 png_ptr->current_text_ptr = png_ptr->current_text; … … 1386 1496 if (png_ptr->buffer_size < png_ptr->current_text_left) 1387 1497 text_size = png_ptr->buffer_size; 1498 1388 1499 else 1389 1500 text_size = png_ptr->current_text_left; 1501 1390 1502 png_crc_read(png_ptr, (png_bytep)png_ptr->current_text_ptr, text_size); 1391 1503 png_ptr->current_text_left -= text_size; … … 1418 1530 1419 1531 for (lang = key; *lang; lang++) 1420 /* empty loop */ ;1532 /* Empty loop */ ; 1421 1533 1422 1534 if (lang < key + png_ptr->current_text_size - 3) … … 1424 1536 1425 1537 comp_flag = *lang++; 1426 lang++; /* skip comp_type, always zero */1538 lang++; /* Skip comp_type, always zero */ 1427 1539 1428 1540 for (lang_key = lang; *lang_key; lang_key++) 1429 /* empty loop */ ; 1430 lang_key++; /* skip NUL separator */ 1541 /* Empty loop */ ; 1542 1543 lang_key++; /* Skip NUL separator */ 1431 1544 1432 1545 text=lang_key; 1546 1433 1547 if (lang_key < key + png_ptr->current_text_size - 1) 1434 1548 { 1435 1549 for (; *text; text++) 1436 /* empty loop */ ;1550 /* Empty loop */ ; 1437 1551 } 1438 1552 … … 1442 1556 text_ptr = (png_textp)png_malloc(png_ptr, 1443 1557 (png_uint_32)png_sizeof(png_text)); 1558 1444 1559 text_ptr->compression = comp_flag + 2; 1445 1560 text_ptr->key = key; … … 1469 1584 length) 1470 1585 { 1471 png_uint_32 skip=0; 1472 png_check_chunk_name(png_ptr, png_ptr->chunk_name); 1586 png_uint_32 skip = 0; 1473 1587 1474 1588 if (!(png_ptr->chunk_name[0] & 0x20)) 1475 1589 { 1476 1590 #if defined(PNG_READ_UNKNOWN_CHUNKS_SUPPORTED) 1477 if(png_handle_as_unknown(png_ptr, png_ptr->chunk_name) !=1478 1591 if (png_handle_as_unknown(png_ptr, png_ptr->chunk_name) != 1592 PNG_HANDLE_CHUNK_ALWAYS 1479 1593 #if defined(PNG_READ_USER_CHUNKS_SUPPORTED) 1480 1481 #endif 1482 )1483 #endif 1484 png_chunk_error(png_ptr, "unknown critical chunk");1485 1486 info_ptr = info_ptr; /* to quiet some compiler warnings */1594 && png_ptr->read_user_chunk_fn == NULL 1595 #endif 1596 ) 1597 #endif 1598 png_chunk_error(png_ptr, "unknown critical chunk"); 1599 1600 info_ptr = info_ptr; /* To quiet some compiler warnings */ 1487 1601 } 1488 1602 … … 1501 1615 (png_charp)png_ptr->chunk_name, 1502 1616 png_sizeof(png_ptr->unknown_chunk.name)); 1503 png_ptr->unknown_chunk.name[png_sizeof(png_ptr->unknown_chunk.name)-1]='\0'; 1617 png_ptr->unknown_chunk.name[png_sizeof(png_ptr->unknown_chunk.name) - 1] 1618 = '\0'; 1504 1619 1505 1620 png_ptr->unknown_chunk.size = (png_size_t)length; 1621 1506 1622 if (length == 0) 1507 1623 png_ptr->unknown_chunk.data = NULL; 1624 1508 1625 else 1509 1626 { 1510 png_ptr->unknown_chunk.data = (png_bytep)png_malloc(png_ptr, length); 1627 png_ptr->unknown_chunk.data = (png_bytep)png_malloc(png_ptr, 1628 (png_uint_32)length); 1511 1629 png_crc_read(png_ptr, (png_bytep)png_ptr->unknown_chunk.data, length); 1512 1630 } 1631 1513 1632 #if defined(PNG_READ_USER_CHUNKS_SUPPORTED) 1514 if (png_ptr->read_user_chunk_fn != NULL)1515 { 1516 /* callback to user unknown chunk handler */1633 if (png_ptr->read_user_chunk_fn != NULL) 1634 { 1635 /* Callback to user unknown chunk handler */ 1517 1636 int ret; 1518 1637 ret = (*(png_ptr->read_user_chunk_fn)) 1519 1638 (png_ptr, &png_ptr->unknown_chunk); 1639 1520 1640 if (ret < 0) 1521 1641 png_chunk_error(png_ptr, "error in user chunk"); 1642 1522 1643 if (ret == 0) 1523 1644 { 1524 1645 if (!(png_ptr->chunk_name[0] & 0x20)) 1525 if (png_handle_as_unknown(png_ptr, png_ptr->chunk_name) !=1646 if (png_handle_as_unknown(png_ptr, png_ptr->chunk_name) != 1526 1647 PNG_HANDLE_CHUNK_ALWAYS) 1527 1648 png_chunk_error(png_ptr, "unknown critical chunk"); … … 1530 1651 } 1531 1652 } 1653 1532 1654 else 1533 1655 #endif … … 1536 1658 png_ptr->unknown_chunk.data = NULL; 1537 1659 } 1660 1538 1661 else 1539 1662 #endif … … 1572 1695 {0xff, 0x0f, 0xff, 0x33, 0xff, 0x55, 0xff}; 1573 1696 #endif 1574 if(png_ptr == NULL) return; 1697 if (png_ptr == NULL) 1698 return; 1699 1575 1700 if (new_row != NULL) /* new_row must == png_ptr->row_buf here. */ 1576 1701 png_combine_row(png_ptr, old_row, png_pass_dsp_mask[png_ptr->pass]); … … 1582 1707 png_progressive_end_ptr end_fn) 1583 1708 { 1584 if(png_ptr == NULL) return; 1709 if (png_ptr == NULL) 1710 return; 1711 1585 1712 png_ptr->info_fn = info_fn; 1586 1713 png_ptr->row_fn = row_fn; … … 1593 1720 png_get_progressive_ptr(png_structp png_ptr) 1594 1721 { 1595 if(png_ptr == NULL) return (NULL); 1722 if (png_ptr == NULL) 1723 return (NULL); 1724 1596 1725 return png_ptr->io_ptr; 1597 1726 }
Note:
See TracChangeset
for help on using the changeset viewer.