mirror of
				https://gitlab.freedesktop.org/pulseaudio/pulseaudio.git
				synced 2025-11-03 09:01:50 -05:00 
			
		
		
		
	Fix the parsing of trailing default values in the "control" module argument.
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@2092 fefdeb5f-60dc-0310-8127-8f9354f1896f
This commit is contained in:
		
							parent
							
								
									dccf411469
								
							
						
					
					
						commit
						39ba68bcf4
					
				
					 1 changed files with 14 additions and 6 deletions
				
			
		| 
						 | 
					@ -441,7 +441,7 @@ int pa__init(pa_module*m) {
 | 
				
			||||||
        use_default = pa_xnew(pa_bool_t, n_control);
 | 
					        use_default = pa_xnew(pa_bool_t, n_control);
 | 
				
			||||||
        p = 0;
 | 
					        p = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        while ((k = pa_split(cdata, ",", &state))) {
 | 
					        while ((k = pa_split(cdata, ",", &state)) && p < n_control) {
 | 
				
			||||||
            float f;
 | 
					            float f;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            if (*k == 0) {
 | 
					            if (*k == 0) {
 | 
				
			||||||
| 
						 | 
					@ -458,15 +458,23 @@ int pa__init(pa_module*m) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            pa_xfree(k);
 | 
					            pa_xfree(k);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            if (p >= n_control) {
 | 
					 | 
				
			||||||
                pa_log("Too many control values passed, %lu expected.", n_control);
 | 
					 | 
				
			||||||
                goto fail;
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            use_default[p] = FALSE;
 | 
					            use_default[p] = FALSE;
 | 
				
			||||||
            u->control[p++] = f;
 | 
					            u->control[p++] = f;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        /* The previous loop doesn't take the last control value into account
 | 
				
			||||||
 | 
					           if it is left empty, so we do it here. */
 | 
				
			||||||
 | 
					        if (*cdata == 0 || cdata[strlen(cdata) - 1] == ',') {
 | 
				
			||||||
 | 
					            if (p < n_control)
 | 
				
			||||||
 | 
					                use_default[p] = TRUE;
 | 
				
			||||||
 | 
					            p++;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if (p > n_control) {
 | 
				
			||||||
 | 
					            pa_log("Too many control values passed, %lu expected.", n_control);
 | 
				
			||||||
 | 
					            goto fail;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if (p < n_control) {
 | 
					        if (p < n_control) {
 | 
				
			||||||
            pa_log("Not enough control values passed, %lu expected, %lu passed.", n_control, p);
 | 
					            pa_log("Not enough control values passed, %lu expected, %lu passed.", n_control, p);
 | 
				
			||||||
            goto fail;
 | 
					            goto fail;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue