377
377
 
        /* Point at correct offset in header for the filter information */
378
378
 
        p = buf + filter_info_off;
379
379
 
380
380
 
        /* Decode the size of a filtered root direct block */
381
381
 
        H5F_DECODE_LENGTH(udata->f, p, hdr->pline_root_direct_size);
382
382
 
383
383
 
        /* Decode the filter mask for a filtered root direct block */
384
384
 
        UINT32DECODE(p, hdr->pline_root_direct_filter_mask);
385
385
 
386
386
 
        /* Decode I/O filter information */
387
 
-
        if(NULL == (pline = (H5O_pline_t *)H5O_msg_decode(hdr->f, udata->dxpl_id, NULL, H5O_PLINE_ID, len, image)))
 
387
+
        if(NULL == (pline = (H5O_pline_t *)H5O_msg_decode(hdr->f, udata->dxpl_id, NULL, H5O_PLINE_ID, hdr->filter_len, p)))
388
388
 
            HGOTO_ERROR(H5E_HEAP, H5E_CANTDECODE, NULL, "can't decode I/O pipeline filters")
389
389
 
        p += hdr->filter_len;
390
390
 
391
391
 
        /* Copy the information into the header's I/O pipeline structure */
392
392
 
        if(NULL == H5O_msg_copy(H5O_PLINE_ID, pline, &(hdr->pline)))
393
393
 
            HGOTO_ERROR(H5E_HEAP, H5E_CANTCOPY, NULL, "can't copy I/O filter pipeline")
394
394
 
395
395
 
        /* Release the space allocated for the I/O pipeline filters */
396
396
 
        H5O_msg_free(H5O_PLINE_ID, pline);
397
397
 
    } /* end if */