From 41b63bbe47760c9e313f1397b7c0314c258153b1 Mon Sep 17 00:00:00 2001
From: Warren Dukes <warren.dukes@gmail.com>
Date: Sun, 29 Feb 2004 08:10:52 +0000
Subject: fix a stupid bug where i was storing the decode_pid directorly from
 fork() call, and since decode_pid is shared now, it may get assigned zero
 after the parent assigns it the true pid, not good!!

git-svn-id: https://svn.musicpd.org/mpd/trunk@124 09075e82-0dd4-0310-85a5-a0d7c8717e4f
---
 src/decode.c     | 9 ++++++---
 src/mp3_decode.c | 2 +-
 2 files changed, 7 insertions(+), 4 deletions(-)

(limited to 'src')

diff --git a/src/decode.c b/src/decode.c
index bdd5cd379..52e5075ff 100644
--- a/src/decode.c
+++ b/src/decode.c
@@ -114,6 +114,8 @@ int waitOnDecode(PlayerControl * pc, AudioFormat * af, DecoderControl * dc,
 
 	if(dc->start || dc->error!=DECODE_ERROR_NOERROR) {
 		strncpy(pc->erroredFile,pc->file,MAXPATHLEN);
+		printf("error: %i, start: %i, decode_pid: %i\n",dc->error,
+			dc->start,*decode_pid);
 		pc->error = PLAYER_ERROR_FILE;
 		quitDecode(pc,dc);
 		return -1;
@@ -198,9 +200,9 @@ void decodeSeek(PlayerControl * pc, AudioFormat * af, DecoderControl * dc,
 int decoderInit(PlayerControl * pc, Buffer * cb, AudioFormat *af, 
 			DecoderControl * dc) {
 	decode_pid = &(pc->decode_pid);
-	*decode_pid = fork();
+	int pid = fork();
 
-	if(*decode_pid==0) {
+	if(pid==0) {
 		/* CHILD */
 
 		while(1) {
@@ -247,11 +249,12 @@ int decoderInit(PlayerControl * pc, Buffer * cb, AudioFormat *af,
 		exit(0);
 		/* END OF CHILD */
 	}
-	else if(*decode_pid<0) {
+	else if(pid<0) {
 		strncpy(pc->erroredFile,pc->file,MAXPATHLEN);
 		pc->error = PLAYER_ERROR_SYSTEM;
 		return -1;
 	}
+	else *decode_pid = pid;
 
 	return 0;
 }
diff --git a/src/mp3_decode.c b/src/mp3_decode.c
index 6681c8469..5defdcf30 100644
--- a/src/mp3_decode.c
+++ b/src/mp3_decode.c
@@ -479,7 +479,7 @@ void initAudioFormatFromMp3DecodeData(mp3DecodeData * data, AudioFormat * af) {
 
 int mp3_decode(Buffer * cb, AudioFormat * af, DecoderControl * dc) {
 	mp3DecodeData data;
-	
+
 	if(openMp3(dc->file,&data) < 0) {
 		ERROR("Input does not appear to be a mp3 bit stream.\n");
 		return -1;
-- 
cgit v1.2.3