Probably but its weird. See i can do the same routine as the VectorScale macro uses and it works if i restrict it to the function where i want to use it but if i use the global macro it breaks.
I have a strange hunch that some other function using the VectorScale macro is bleeding data and corrupting the output.
Maybe if i write the output to a new vec3_t initialized to 0 it will work ? worth a try.
something like
vec3_t rgb = {0,0,0};
and probably also the lightscale
float l = 0;
l = vertexligtfunc(yadda,yadda,yadda); // nope my code does not look like this

examplary use only.
VectorScale(color, l, rgb); glColor4f(rgb[0], rgb[1], rgb[2], alpha);
Productivity is a state of mind.