頑張って2行で書くと、
 if (color)
  pointer ? pointer[n++] = color : (poiner*)n++;
か、
 if (color && ++n && pointer)
  poiner[n-1] = color;
が考えられますが、お世辞にも見やすいとは言いがたい。