I'd like to add some details to DaftWullie's answer. The key point is that while the logical $X$ operator, which I'll write as $X_L$, must, by definition, satisfy
$$ X_L \left|+\right>_L = \left.|+\right>_L, \quad X_L \left|-\right>_L = -\left|-\right>_L $$
the analogous equation does not hold when $X_L$ is replaced with an $X$ operator acting on a single qubit. The $\oplus$ on the bottom wire in the diagram, connected to its control on the top wire, indicates a controlled $X$ operator on each qubit. (CNOT pairing up wires, not a logical $X_L$.) In general this combination of CNOTs does not leave $\left|+\right>$ invariant.
Preliminaries on CSS codes. For simplicity, we suppose that the input codeword, on the top 'wire' (inverted commas since this indicates multiple wires) in the diagram in the question is zero logical, $\left|0\right>_L$. For Steane extraction we are working in a CSS code with $k$ logical qubits: let $P$ and $Q$ be the relevant matrices so
$$\left|0\right>_L = \sum_{u \in \langle P \rangle} \left|u\right>$$
where $\langle P \rangle$ is the row-space of $P$, and, by a MacWilliams' type calculation,
$$\left|+\right>_L = \frac{1}{2^{m/2}} \sum_{v \in \langle Q^\perp \rangle} \left|v\right>$$
where $m$ is the dimension of $\langle Q^\perp \rangle$.
Example. In the Steane $[[7,1,3]]$ code, using the parity check matrix from the Wikipedia article we have
$$ P = Q = \left( \begin{matrix} 1 & 0 & 0 & 1 & 0 & 1 & 1 \\ 0 & 1 &0 & 1 & 1 & 0 & 1 \\ 0 & 0 & 1 & 0 & 1 & 1 & 1 \end{matrix} \right) $$
and $\langle Q^\perp \rangle = \langle P \rangle \oplus \langle 1111111 \rangle$, where $\oplus$ is the direct sum of vector spaces, so
$\left|0\right>_L = \sum_{u \in \langle P \rangle} \left|u\right>$ and
$$\left|+\right>_L = \frac{1}{\sqrt{2}} \sum_{u \in \langle P \rangle} \left|u\right> + \frac{1}{\sqrt{2}} \sum_{u \in \langle P \rangle} \left| u + 1111111\right> = \frac{1}{\sqrt{2}} \left|0\right>_L + \frac{1}{\sqrt{2}} \left|1\right>_L.$$
In general for an $[[n,k,d]]$ quantum code, $\left|+\right>_L$ is a sum of $2^k$ basis states in the $Z$-logical basis.
Diagrams. The diagram below shows the action of the CNOT pairing up each wire when the input qubit is a basis state in the $Z$-basis
|u> -------*---- |u>
|
|w> -------+---- |u+w>
Observe that flipping a bit in $u$ means that we get a corresponding bit flip in $u+w$. Thus we can deduce the second diagram below shows how a single qubit $X$ error, gets `copied down' onto the ancilla.
---X---*------ ------*---X---
| = |
-------+------ ------+---X---
Calculation. We can now calculate the effect of a single qubit error, say in position $1$. On the input wires we have $X^1 \left|0\right>_L$ and $\left|+\right>_L$. On the output wires, by the second diagram, we have $X^1 \left|0\right>_L$ and
$$\frac{1}{2^{k/2}} \sum_{v \in \langle Q^\perp \rangle} X^1 \left|v\right>.$$
This expresses the output on the bottom 'wire' in the $Z$-basis. When we measure we get a random state $X^1 \left| v \right>$ where $v \in \langle Q^\perp \rangle$. This tells us $\overline{v_1} v_2 \ldots v_n$ where $v_1 v_2 \ldots v_n$ is a codeword in the code with generator matrix $Q^\perp$ and parity check matrix $Q$. We can now take the syndrome of this word and discover (provided this code is $1$-error correcting) that there was an error in the first position.
Example concluded. For the Steane [[7,4,1]]-code, we measure $\overline{v_1}v_2 \ldots v_n$ where $v_1v_2\ldots v_n$ is a codeword in the Hamming $[7,4,3]$-code with parity check matrix $P$. For instance, one codeword is $1110001$, so we might measure $0110001$. We now calculate the syndrome by left-multiplying the column vector by $P$, to get
$$ \left( \begin{matrix} 1 & 0 & 0 & 1 & 0 & 1 & 1 \\ 0 & 1 &0 & 1 & 1 & 0 & 1 \\ 0 & 0 & 1 & 0 & 1 & 1 & 1 \end{matrix} \right) \left( \begin{matrix} 0 \\ 1 \\ 1 \\ 0 \\ 0 \\ 0 \\ 1 \end{matrix} \right) = \left( \begin{matrix} 1 \\ 0 \\ 0 \end{matrix} \right). $$
Since this is the first column of $P$, we conclude that there was an $X$ error in the first position.