# HG changeset patch # User Carl Byington # Date 1303077678 25200 # Node ID 41862bddcf630874de73eee654159fed43346c31 # Parent 156cf548c7642ba531bc77033a7ad4a821685f8c adding more debug code diff -r 156cf548c764 -r 41862bddcf63 src/libpst.c --- a/src/libpst.c Sun Apr 17 14:07:25 2011 -0700 +++ b/src/libpst.c Sun Apr 17 15:01:18 2011 -0700 @@ -1339,8 +1339,23 @@ // i_id has been updated to the datablock containing the attachment data attach->i_id = id2_ptr->id->i_id; attach->id2_head = deep_copy(id2_ptr->child); - DEBUG_WARN(("attachment size was %#"PRIx64", is now %#"PRIx64" based on size of i_id", attach->data.size, id2_ptr->id->size)); - attach->data.size = id2_ptr->id->size; + { + // fetch the actual data to determine the actual attachment size. + pst_index_ll *ptr; + pst_binary rc; + pst_holder h = {&rc.data, NULL, 0, 0, 0}; + rc.size = 0; + rc.data = NULL; + ptr = pst_getID(pf, attach->i_id); + if (ptr) { + rc.size = pst_ff_getID2data(pf, ptr, &h); + DEBUG_WARN(("attachment size was %#"PRIx64", is now %#"PRIx64" based on size of i_id\n", attach->data.size, rc.size)); + attach->data.size = rc.size; + } else { + DEBUG_WARN(("Couldn't find ID pointer. Cannot save attachment to file\n")); + } + if (rc.data) free(rc.data); + } } else { DEBUG_WARN(("have not located the correct value for the attachment [%#"PRIx64"]\n", attach->id2_val)); } @@ -4141,7 +4156,7 @@ * @return updated size of the output */ static size_t pst_finish_cleanup_holder(pst_holder *h, size_t size) { - char *t; + char *t;attach->i_id = id2_ptr->id->i_id; DEBUG_ENT("pst_finish_cleanup_holder"); if ((h->base64 == 1) && h->fp && h->base64_extra) { // need to encode any bytes left over diff -r 156cf548c764 -r 41862bddcf63 src/readpst.c --- a/src/readpst.c Sun Apr 17 14:07:25 2011 -0700 +++ b/src/readpst.c Sun Apr 17 15:01:18 2011 -0700 @@ -1043,7 +1043,7 @@ { char *attach_filename; DEBUG_ENT("write_inline_attachment"); - DEBUG_INFO(("Attachment Size is %"PRIu64", id %#"PRIx64"\n", (uint64_t)attach->data.size, attach->i_id)); + DEBUG_INFO(("Attachment Size is %"PRIu64", data = %"PRIxPTR", id %#"PRIx64"\n", (uint64_t)attach->data.size, attach->data.data, attach->i_id)); if (!attach->data.data) { // make sure we can fetch data from the id