projects
/
ruby-vorbistagger.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
66ba15d
)
Sanitized memory allocation scheme.
author
Tilman Sauerbeck
<tilman@code-monkey.de>
Thu, 17 Aug 2006 15:51:37 +0000
(17:51 +0200)
committer
Tilman Sauerbeck
<tilman@code-monkey.de>
Wed, 23 Aug 2006 17:39:15 +0000
(19:39 +0200)
ext/vcedit.c
patch
|
blob
|
history
diff --git
a/ext/vcedit.c
b/ext/vcedit.c
index 1aee14c25ed1fcf4cd0b0ba2fb2d53edd903b3fa..832f417b2b30519cba6661b3dfb063c52a43f925 100644
(file)
--- a/
ext/vcedit.c
+++ b/
ext/vcedit.c
@@
-34,11
+34,11
@@
struct vcedit_state_St {
int refcount;
struct vcedit_state_St {
int refcount;
- ogg_sync_state
*
oy;
- ogg_stream_state
*
os;
+ ogg_sync_state oy;
+ ogg_stream_state os;
- vorbis_comment
*
vc;
- vorbis_info
*
vi;
+ vorbis_comment vc;
+ vorbis_info vi;
char filename[PATH_MAX];
char filename[PATH_MAX];
@@
-58,10
+58,6
@@
struct vcedit_state_St {
static void
vcedit_state_free (vcedit_state *state)
{
static void
vcedit_state_free (vcedit_state *state)
{
- free (state->oy);
- free (state->os);
- free (state->vc);
- free (state->vi);
free (state->mainbuf);
free (state->bookbuf);
free (state->vendor);
free (state->mainbuf);
free (state->bookbuf);
free (state->vendor);
@@
-79,22
+75,6
@@
vcedit_state_init (vcedit_state *state)
{
state->refcount = 1;
{
state->refcount = 1;
- state->oy = malloc (sizeof (ogg_sync_state));
- if (!state->oy)
- return false;
-
- state->os = malloc (sizeof (ogg_stream_state));
- if (!state->os)
- return false;
-
- state->vc = malloc (sizeof (vorbis_comment));
- if (!state->vc)
- return false;
-
- state->vi = malloc (sizeof (vorbis_info));
- if (!state->vi)
- return false;
-
return true;
}
return true;
}
@@
-123,17
+103,17
@@
vcedit_state_new (const char *filename)
vorbis_comment *
vcedit_comments (vcedit_state *state)
{
vorbis_comment *
vcedit_comments (vcedit_state *state)
{
- return state->opened ? state->vc : NULL;
+ return state->opened ?
&
state->vc : NULL;
}
static void
vcedit_clear_internals (vcedit_state *state)
{
}
static void
vcedit_clear_internals (vcedit_state *state)
{
- ogg_stream_clear (state->os);
- ogg_sync_clear (state->oy);
+ ogg_stream_clear (
&
state->os);
+ ogg_sync_clear (
&
state->oy);
- vorbis_info_clear (state->vi);
- vorbis_comment_clear (state->vc);
+ vorbis_info_clear (
&
state->vi);
+ vorbis_comment_clear (
&
state->vc);
free (state->vendor);
state->vendor = NULL;
free (state->vendor);
state->vendor = NULL;
@@
-229,7
+209,7
@@
_blocksize (vcedit_state *s, ogg_packet *p)
{
int this, ret = 0;
{
int this, ret = 0;
- this = vorbis_packet_blocksize (s->vi, p);
+ this = vorbis_packet_blocksize (
&
s->vi, p);
if (s->prevW)
ret = (this + s->prevW) / 4;
if (s->prevW)
ret = (this + s->prevW) / 4;
@@
-245,7
+225,7
@@
_fetch_next_packet (vcedit_state *s, ogg_packet *p, ogg_page *page)
char *buffer;
int result, bytes;
char *buffer;
int result, bytes;
- result = ogg_stream_packetout (s->os, p);
+ result = ogg_stream_packetout (
&
s->os, p);
if (result > 0)
return 1;
if (result > 0)
return 1;
@@
-253,10
+233,10
@@
_fetch_next_packet (vcedit_state *s, ogg_packet *p, ogg_page *page)
if (s->eosin)
return 0;
if (s->eosin)
return 0;
- while (ogg_sync_pageout (s->oy, page) <= 0) {
- buffer = ogg_sync_buffer (s->oy, CHUNKSIZE);
+ while (ogg_sync_pageout (
&
s->oy, page) <= 0) {
+ buffer = ogg_sync_buffer (
&
s->oy, CHUNKSIZE);
bytes = fread (buffer, 1, CHUNKSIZE, s->in);
bytes = fread (buffer, 1, CHUNKSIZE, s->in);
- ogg_sync_wrote (s->oy, bytes);
+ ogg_sync_wrote (
&
s->oy, bytes);
if (!bytes)
return 0;
if (!bytes)
return 0;
@@
-270,7
+250,7
@@
_fetch_next_packet (vcedit_state *s, ogg_packet *p, ogg_page *page)
return 0;
}
return 0;
}
- ogg_stream_pagein (s->os, page);
+ ogg_stream_pagein (
&
s->os, page);
return _fetch_next_packet (s, p, page);
}
return _fetch_next_packet (s, p, page);
}
@@
-290,20
+270,20
@@
vcedit_open (vcedit_state *state)
if (!state->in)
return VCEDIT_ERR_OPEN;
if (!state->in)
return VCEDIT_ERR_OPEN;
- ogg_sync_init (state->oy);
+ ogg_sync_init (
&
state->oy);
while (1) {
while (1) {
- buffer = ogg_sync_buffer (state->oy, CHUNKSIZE);
+ buffer = ogg_sync_buffer (
&
state->oy, CHUNKSIZE);
bytes = fread (buffer, 1, CHUNKSIZE, state->in);
bytes = fread (buffer, 1, CHUNKSIZE, state->in);
- ogg_sync_wrote (state->oy, bytes);
+ ogg_sync_wrote (
&
state->oy, bytes);
- if (ogg_sync_pageout (state->oy, &og) == 1)
+ if (ogg_sync_pageout (
&
state->oy, &og) == 1)
break;
/* Bail if we don't find data in the first 40 kB */
if (chunks++ >= 10) {
break;
/* Bail if we don't find data in the first 40 kB */
if (chunks++ >= 10) {
- ogg_sync_clear (state->oy);
+ ogg_sync_clear (
&
state->oy);
return VCEDIT_ERR_INVAL;
}
return VCEDIT_ERR_INVAL;
}
@@
-311,21
+291,21
@@
vcedit_open (vcedit_state *state)
state->serial = ogg_page_serialno (&og);
state->serial = ogg_page_serialno (&og);
- ogg_stream_init (state->os, state->serial);
- vorbis_info_init (state->vi);
- vorbis_comment_init (state->vc);
+ ogg_stream_init (
&
state->os, state->serial);
+ vorbis_info_init (
&
state->vi);
+ vorbis_comment_init (
&
state->vc);
- if (ogg_stream_pagein (state->os, &og) < 0) {
+ if (ogg_stream_pagein (
&
state->os, &og) < 0) {
ret = VCEDIT_ERR_INVAL;
goto err;
}
ret = VCEDIT_ERR_INVAL;
goto err;
}
- if (ogg_stream_packetout (state->os, &header_main) != 1) {
+ if (ogg_stream_packetout (
&
state->os, &header_main) != 1) {
ret = VCEDIT_ERR_INVAL;
goto err;
}
ret = VCEDIT_ERR_INVAL;
goto err;
}
- if (vorbis_synthesis_headerin (
state->vi,
state->vc, &header_main) < 0) {
+ if (vorbis_synthesis_headerin (
&state->vi, &
state->vc, &header_main) < 0) {
ret = VCEDIT_ERR_INVAL;
goto err;
}
ret = VCEDIT_ERR_INVAL;
goto err;
}
@@
-339,16
+319,16
@@
vcedit_open (vcedit_state *state)
while (i < 2) {
while (i < 2) {
while (i < 2) {
while (i < 2) {
- int result = ogg_sync_pageout (state->oy, &og);
+ int result = ogg_sync_pageout (
&
state->oy, &og);
if (!result)
break; /* Too little data so far */
if (result == 1) {
if (!result)
break; /* Too little data so far */
if (result == 1) {
- ogg_stream_pagein (state->os, &og);
+ ogg_stream_pagein (
&
state->os, &og);
while (i < 2) {
while (i < 2) {
- result = ogg_stream_packetout (state->os, header);
+ result = ogg_stream_packetout (
&
state->os, header);
if (!result)
break;
if (!result)
break;
@@
-358,7
+338,7
@@
vcedit_open (vcedit_state *state)
goto err;
}
goto err;
}
- vorbis_synthesis_headerin (
state->vi,
state->vc, header);
+ vorbis_synthesis_headerin (
&state->vi, &
state->vc, header);
if (i == 1) {
state->booklen = header->bytes;
if (i == 1) {
state->booklen = header->bytes;
@@
-372,7
+352,7
@@
vcedit_open (vcedit_state *state)
}
}
}
}
- buffer = ogg_sync_buffer (state->oy, CHUNKSIZE);
+ buffer = ogg_sync_buffer (
&
state->oy, CHUNKSIZE);
bytes = fread (buffer, 1, CHUNKSIZE, state->in);
if (bytes == 0 && i < 2) {
bytes = fread (buffer, 1, CHUNKSIZE, state->in);
if (bytes == 0 && i < 2) {
@@
-380,11
+360,11
@@
vcedit_open (vcedit_state *state)
goto err;
}
goto err;
}
- ogg_sync_wrote (state->oy, bytes);
+ ogg_sync_wrote (
&
state->oy, bytes);
}
/* Copy the vendor tag */
}
/* Copy the vendor tag */
- state->vendor = strdup (state->vc
->
vendor);
+ state->vendor = strdup (state->vc
.
vendor);
/* Headers are done! */
state->opened = true;
/* Headers are done! */
state->opened = true;
@@
-443,7
+423,7
@@
vcedit_write (vcedit_state *state)
ogg_stream_init (&streamout, state->serial);
ogg_stream_init (&streamout, state->serial);
- _commentheader_out (state->vc, state->vendor, &header_comments);
+ _commentheader_out (
&
state->vc, state->vendor, &header_comments);
ogg_stream_packetin (&streamout, &header_main);
ogg_stream_packetin (&streamout, &header_comments);
ogg_stream_packetin (&streamout, &header_main);
ogg_stream_packetin (&streamout, &header_comments);
@@
-537,7
+517,7
@@
vcedit_write (vcedit_state *state)
* through, a page at a time.
*/
while (1) {
* through, a page at a time.
*/
while (1) {
- result = ogg_sync_pageout (state->oy, &ogout);
+ result = ogg_sync_pageout (
&
state->oy, &ogout);
if (!result)
break;
if (!result)
break;
@@
-556,9
+536,9
@@
vcedit_write (vcedit_state *state)
}
}
}
}
- buffer = ogg_sync_buffer (state->oy, CHUNKSIZE);
+ buffer = ogg_sync_buffer (
&
state->oy, CHUNKSIZE);
bytes = fread (buffer, 1, CHUNKSIZE, state->in);
bytes = fread (buffer, 1, CHUNKSIZE, state->in);
- ogg_sync_wrote (state->oy, bytes);
+ ogg_sync_wrote (
&
state->oy, bytes);
if (!bytes) {
state->eosin = 1;
if (!bytes) {
state->eosin = 1;