Setting component=0 is later taken to mean the shader did so, which is not always legal. It should instead set the component as not set by the shader.