If you put a non-full block and light a fire under it with a fire starter, the block will just be replaced. I'm assuming it's because it uses setBlock. I suggest performing an isAir check to mitigate this.
EDIT: AbstractFireBlock#canPlaceAt needs to be used.