aboutsummaryrefslogtreecommitdiffstats
path: root/src/decode.c
diff options
context:
space:
mode:
authorWarren Dukes <warren.dukes@gmail.com>2004-02-29 08:10:52 +0000
committerWarren Dukes <warren.dukes@gmail.com>2004-02-29 08:10:52 +0000
commit41b63bbe47760c9e313f1397b7c0314c258153b1 (patch)
tree529a9cef8373c862eb0d229d26618e20f7c120b7 /src/decode.c
parentcfd0e18dc43c2e3251167da85b2c5ed691aac824 (diff)
downloadmpd-41b63bbe47760c9e313f1397b7c0314c258153b1.tar.gz
mpd-41b63bbe47760c9e313f1397b7c0314c258153b1.tar.xz
mpd-41b63bbe47760c9e313f1397b7c0314c258153b1.zip
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
Diffstat (limited to 'src/decode.c')
-rw-r--r--src/decode.c9
1 files changed, 6 insertions, 3 deletions
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;
}