The problem obviously is that BEAM is not suited for smoke effects. Just created regular particles (and if the distance per frame between entity.old_x and entity.x is too big, create more particles inbetween).
Regarding the pointers: Probably not, but you can test it. Note though that I was helped finding a near untraceable acknex crash, the reason was a my-pointer in some particle function.