png_ptr->row_info.rowbytes = ((png_ptr->row_info.width * (png_uint_32)png_ptr->row_info.pixel_depth + 7) >> 3);
png_ptr->row_info.rowbytes = PNG_ROWBYTES(png_ptr->row_info.pixel_depth, png_ptr->row_info.width);
png_push_process_row(png_structp png_ptr){   png_ptr->row_info.color_type = png_ptr->color_type;   png_ptr->row_info.width = png_ptr->iwidth;   png_ptr->row_info.channels = png_ptr->channels;   png_ptr->row_info.bit_depth = png_ptr->bit_depth;   png_ptr->row_info.pixel_depth = png_ptr->pixel_depth;   png_ptr->row_info.rowbytes = ((png_ptr->row_info.width *      (png_uint_32)png_ptr->row_info.pixel_depth + 7) >> 3);   png_read_filter_row(png_ptr, &(png_ptr->row_info),      png_ptr->row_buf + 1, png_ptr->prev_row + 1,      (int)(png_ptr->row_buf[0]));   png_memcpy_check(png_ptr, png_ptr->prev_row, png_ptr->row_buf,      png_ptr->rowbytes + 1);   if (png_ptr->transformations)      png_do_read_transformations(png_ptr);#if defined(PNG_READ_INTERLACING_SUPPORTED)   /* blow up interlaced rows to full size */   if (png_ptr->interlaced && (png_ptr->transformations & PNG_INTERLACE))   {      if (png_ptr->pass < 6)/*       old interface (pre-1.0.9):         png_do_read_interlace(&(png_ptr->row_info),            png_ptr->row_buf + 1, png_ptr->pass, png_ptr->transformations); */         png_do_read_interlace(png_ptr);    switch (png_ptr->pass)    {         case 0:         {            int i;            for (i = 0; i < 8 && png_ptr->pass == 0; i++)            {               png_push_have_row(png_ptr, png_ptr->row_buf + 1);               png_read_push_finish_row(png_ptr); /* updates png_ptr->pass */            }            if (png_ptr->pass == 2) /* pass 1 might be empty */            {               for (i = 0; i < 4 && png_ptr->pass == 2; i++)               {                  png_push_have_row(png_ptr, png_bytep_NULL);                  png_read_push_finish_row(png_ptr);               }            }            if (png_ptr->pass == 4 && png_ptr->height <= 4)            {               for (i = 0; i < 2 && png_ptr->pass == 4; i++)               {                  png_push_have_row(png_ptr, png_bytep_NULL);                  png_read_push_finish_row(png_ptr);               }            }            if (png_ptr->pass == 6 && png_ptr->height <= 4)            {                png_push_have_row(png_ptr, png_bytep_NULL);                png_read_push_finish_row(png_ptr);            }            break;         }         case 1:         {            int i;            for (i = 0; i < 8 && png_ptr->pass == 1; i++)            {               png_push_have_row(png_ptr, png_ptr->row_buf + 1);               png_read_push_finish_row(png_ptr);            }            if (png_ptr->pass == 2) /* skip top 4 generated rows */            {               for (i = 0; i < 4 && png_ptr->pass == 2; i++)               {                  png_push_have_row(png_ptr, png_bytep_NULL);                  png_read_push_finish_row(png_ptr);               }            }            break;         }         case 2:         {            int i;            for (i = 0; i < 4 && png_ptr->pass == 2; i++)            {               png_push_have_row(png_ptr, png_ptr->row_buf + 1);               png_read_push_finish_row(png_ptr);            }            for (i = 0; i < 4 && png_ptr->pass == 2; i++)            {               png_push_have_row(png_ptr, png_bytep_NULL);               png_read_push_finish_row(png_ptr);            }            if (png_ptr->pass == 4) /* pass 3 might be empty */            {               for (i = 0; i < 2 && png_ptr->pass == 4; i++)               {                  png_push_have_row(png_ptr, png_bytep_NULL);                  png_read_push_finish_row(png_ptr);               }            }            break;         }         case 3:         {            int i;            for (i = 0; i < 4 && png_ptr->pass == 3; i++)            {               png_push_have_row(png_ptr, png_ptr->row_buf + 1);               png_read_push_finish_row(png_ptr);            }            if (png_ptr->pass == 4) /* skip top two generated rows */            {               for (i = 0; i < 2 && png_ptr->pass == 4; i++)               {                  png_push_have_row(png_ptr, png_bytep_NULL);                  png_read_push_finish_row(png_ptr);               }            }            break;         }         case 4:         {            int i;            for (i = 0; i < 2 && png_ptr->pass == 4; i++)            {               png_push_have_row(png_ptr, png_ptr->row_buf + 1);               png_read_push_finish_row(png_ptr);            }            for (i = 0; i < 2 && png_ptr->pass == 4; i++)            {               png_push_have_row(png_ptr, png_bytep_NULL);               png_read_push_finish_row(png_ptr);            }            if (png_ptr->pass == 6) /* pass 5 might be empty */            {               png_push_have_row(png_ptr, png_bytep_NULL);               png_read_push_finish_row(png_ptr);            }            break;         }         case 5:         {            int i;            for (i = 0; i < 2 && png_ptr->pass == 5; i++)            {               png_push_have_row(png_ptr, png_ptr->row_buf + 1);               png_read_push_finish_row(png_ptr);            }            if (png_ptr->pass == 6) /* skip top generated row */            {               png_push_have_row(png_ptr, png_bytep_NULL);               png_read_push_finish_row(png_ptr);            }            break;         }         case 6:         {            png_push_have_row(png_ptr, png_ptr->row_buf + 1);            png_read_push_finish_row(png_ptr);            if (png_ptr->pass != 6)               break;            png_push_have_row(png_ptr, png_bytep_NULL);            png_read_push_finish_row(png_ptr);         }      }   }   else#endif   {      png_push_have_row(png_ptr, png_ptr->row_buf + 1);      png_read_push_finish_row(png_ptr);   }}