@@ -9,6 +9,8 @@ STATUS serializeSessionDescriptionInit(PRtcSessionDescriptionInit pSessionDescri
9
9
PCHAR curr , tail , next ;
10
10
UINT32 lineLen , inputSize = 0 , amountWritten ;
11
11
12
+ // NOTE: sessionDescriptionJSON can be NULL. In this case, no writing is actually done,
13
+ // but the size that it would have written is returned.
12
14
CHK (pSessionDescriptionInit != NULL && sessionDescriptionJSONLen != NULL , STATUS_NULL_ARG );
13
15
14
16
inputSize = * sessionDescriptionJSONLen ;
@@ -30,21 +32,29 @@ STATUS serializeSessionDescriptionInit(PRtcSessionDescriptionInit pSessionDescri
30
32
lineLen -- ;
31
33
}
32
34
33
- amountWritten =
34
- SNPRINTF (sessionDescriptionJSON + * sessionDescriptionJSONLen , sessionDescriptionJSON == NULL ? 0 : inputSize - * sessionDescriptionJSONLen ,
35
- "%*.*s%s" , lineLen , lineLen , curr , SESSION_DESCRIPTION_INIT_LINE_ENDING );
35
+ if (sessionDescriptionJSON == NULL ) {
36
+ amountWritten = SNPRINTF (NULL , 0 , "%*.*s%s" , lineLen , lineLen , curr , SESSION_DESCRIPTION_INIT_LINE_ENDING );
37
+ } else {
38
+ amountWritten = SNPRINTF (sessionDescriptionJSON + * sessionDescriptionJSONLen , inputSize - * sessionDescriptionJSONLen , "%*.*s%s" , lineLen ,
39
+ lineLen , curr , SESSION_DESCRIPTION_INIT_LINE_ENDING );
40
+ }
36
41
CHK (sessionDescriptionJSON == NULL || ((inputSize - * sessionDescriptionJSONLen ) >= amountWritten ), STATUS_BUFFER_TOO_SMALL );
37
42
38
43
* sessionDescriptionJSONLen += amountWritten ;
39
44
curr = next + 1 ;
40
45
}
41
46
42
- amountWritten = SNPRINTF (sessionDescriptionJSON + * sessionDescriptionJSONLen ,
43
- sessionDescriptionJSON == NULL ? 0 : inputSize - * sessionDescriptionJSONLen , SESSION_DESCRIPTION_INIT_TEMPLATE_TAIL );
47
+ if (sessionDescriptionJSON == NULL ) {
48
+ amountWritten = SNPRINTF (NULL , 0 , SESSION_DESCRIPTION_INIT_TEMPLATE_TAIL );
49
+ } else {
50
+ amountWritten = SNPRINTF (sessionDescriptionJSON + * sessionDescriptionJSONLen , inputSize - * sessionDescriptionJSONLen ,
51
+ SESSION_DESCRIPTION_INIT_TEMPLATE_TAIL );
52
+ }
44
53
CHK (sessionDescriptionJSON == NULL || ((inputSize - * sessionDescriptionJSONLen ) >= amountWritten ), STATUS_BUFFER_TOO_SMALL );
45
54
* sessionDescriptionJSONLen += (amountWritten + 1 ); // NULL terminator
46
55
47
56
CleanUp :
57
+ CHK_LOG_ERR (retStatus );
48
58
49
59
LEAVES ();
50
60
return retStatus ;
0 commit comments