Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
M
mpd
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Иван Мажукин
mpd
Commits
b0e1a3d3
Commit
b0e1a3d3
authored
Sep 24, 2009
by
Max Kellermann
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
update: pass const string to update_enqueue()
Duplicate the path string within update.c, do not expect an allocated string as parameter.
parent
1cc4914b
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
20 additions
and
14 deletions
+20
-14
command.c
src/command.c
+2
-2
update.c
src/update.c
+11
-7
update.h
src/update.h
+7
-5
No files found.
src/command.c
View file @
b0e1a3d3
...
...
@@ -1018,12 +1018,12 @@ handle_playlistmove(struct client *client, G_GNUC_UNUSED int argc, char *argv[])
static
enum
command_return
handle_update
(
struct
client
*
client
,
G_GNUC_UNUSED
int
argc
,
char
*
argv
[])
{
char
*
path
=
NULL
;
c
onst
c
har
*
path
=
NULL
;
unsigned
ret
;
assert
(
argc
<=
2
);
if
(
argc
==
2
)
path
=
g_strdup
(
argv
[
1
])
;
path
=
argv
[
1
]
;
ret
=
update_enqueue
(
path
);
if
(
ret
>
0
)
{
...
...
src/update.c
View file @
b0e1a3d3
...
...
@@ -790,7 +790,8 @@ static void * update_task(void *_path)
return
NULL
;
}
static
void
spawn_update_task
(
char
*
path
)
static
void
spawn_update_task
(
const
char
*
path
)
{
GError
*
e
=
NULL
;
...
...
@@ -798,15 +799,18 @@ static void spawn_update_task(char *path)
progress
=
UPDATE_PROGRESS_RUNNING
;
modified
=
false
;
if
(
!
(
update_thr
=
g_thread_create
(
update_task
,
path
,
TRUE
,
&
e
)))
update_thr
=
g_thread_create
(
update_task
,
g_strdup
(
path
),
TRUE
,
&
e
);
if
(
update_thr
==
NULL
)
g_error
(
"Failed to spawn update task: %s"
,
e
->
message
);
if
(
++
update_task_id
>
update_task_id_max
)
update_task_id
=
1
;
g_debug
(
"spawned thread for update job id %i"
,
update_task_id
);
}
unsigned
update_enqueue
(
char
*
path
)
update_enqueue
(
c
onst
c
har
*
path
)
{
assert
(
g_thread_self
()
==
main_task
);
...
...
@@ -816,17 +820,16 @@ update_enqueue(char *path)
if
(
progress
!=
UPDATE_PROGRESS_IDLE
)
{
unsigned
next_task_id
;
if
(
update_paths_nr
==
G_N_ELEMENTS
(
update_paths
))
{
g_free
(
path
);
if
(
update_paths_nr
==
G_N_ELEMENTS
(
update_paths
))
return
0
;
}
assert
(
update_paths_nr
<
G_N_ELEMENTS
(
update_paths
));
update_paths
[
update_paths_nr
++
]
=
path
;
update_paths
[
update_paths_nr
++
]
=
g_strdup
(
path
)
;
next_task_id
=
update_task_id
+
update_paths_nr
;
return
next_task_id
>
update_task_id_max
?
1
:
next_task_id
;
}
spawn_update_task
(
path
);
idle_add
(
IDLE_UPDATE
);
...
...
@@ -884,6 +887,7 @@ static void update_finished_event(void)
memmove
(
&
update_paths
[
0
],
&
update_paths
[
1
],
--
update_paths_nr
*
sizeof
(
char
*
));
spawn_update_task
(
path
);
g_free
(
path
);
}
else
{
progress
=
UPDATE_PROGRESS_IDLE
;
...
...
src/update.h
View file @
b0e1a3d3
...
...
@@ -27,12 +27,14 @@ void update_global_finish(void);
unsigned
isUpdatingDB
(
void
);
/*
* returns the positive update job ID on success,
* returns 0 if busy
* @path will be freed by this function and should not be reused
/**
* Add this path to the database update queue.
*
* @param path a path to update; if NULL or an empty string,
* the whole music directory is updated
* @return the job id, or 0 on error
*/
unsigned
update_enqueue
(
char
*
path
);
update_enqueue
(
c
onst
c
har
*
path
);
#endif
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment