I would recommend that you only use that approach on ordinary memory bitmaps, never sub-bitmaps, video bitmaps, system bitmaps, etc. Also, on further thought, my recommended method for determining the size for that purpose is:
((int)(bmp->line[bmp->h-1] - bmp->line) + bmp->w * sizeof(/*pixel size*/))
Really, I'd suggest just blitting. It's about the same speed unless your bitmaps are 24bpp.