Fixed bug in constant-detection.
diff --git a/src/libFLAC/encoder.c b/src/libFLAC/encoder.c
index 2a6fffa..512b626 100644
--- a/src/libFLAC/encoder.c
+++ b/src/libFLAC/encoder.c
@@ -627,10 +627,20 @@
 			/* check for constant subframe */
 			guess_fixed_order = FLAC__fixed_compute_best_predictor(integer_signal[channel]+FLAC__MAX_FIXED_ORDER, frame_header->blocksize-FLAC__MAX_FIXED_ORDER, fixed_residual_bits_per_sample);
 			if(fixed_residual_bits_per_sample[1] == 0.0) {
-				candidate_bits = encoder_evaluate_constant_subframe_(integer_signal[channel][0], frame_header->bits_per_sample, &(encoder->guts->candidate_subframe));
-				if(candidate_bits < best_bits) {
-					encoder_promote_candidate_subframe_(encoder);
-					best_bits = candidate_bits;
+				/* the above means integer_signal[channel]+FLAC__MAX_FIXED_ORDER is constant, now we just have to check the warmup samples */
+				unsigned i, signal_is_constant = true;
+				for(i = 1; i <= FLAC__MAX_FIXED_ORDER; i++) {
+					if(integer_signal[channel][0] != integer_signal[channel][i]) {
+						signal_is_constant = false;
+						break;
+					}
+				}
+				if(signal_is_constant) {
+					candidate_bits = encoder_evaluate_constant_subframe_(integer_signal[channel][0], frame_header->bits_per_sample, &(encoder->guts->candidate_subframe));
+					if(candidate_bits < best_bits) {
+						encoder_promote_candidate_subframe_(encoder);
+						best_bits = candidate_bits;
+					}
 				}
 			}
 			else {