Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
V
vlc-1.1
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Redmine
Redmine
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Metrics
Environments
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
videolan
vlc-1.1
Commits
14d79cf6
Commit
14d79cf6
authored
Feb 15, 2008
by
Pierre d'Herbemont
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
vlc_arrays.h: Fix insertion rebuilding.
parent
456bdd9f
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
5 additions
and
38 deletions
+5
-38
include/vlc_arrays.h
include/vlc_arrays.h
+5
-38
No files found.
include/vlc_arrays.h
View file @
14d79cf6
...
@@ -438,8 +438,8 @@ static inline void vlc_dictionary_clear( vlc_dictionary_t * p_dict )
...
@@ -438,8 +438,8 @@ static inline void vlc_dictionary_clear( vlc_dictionary_t * p_dict )
p_current
=
p_dict
->
p_entries
[
i
];
p_current
=
p_dict
->
p_entries
[
i
];
while
(
p_current
)
while
(
p_current
)
{
{
p_next
=
p_
dict
->
p_entries
[
i
]
->
p_next
;
p_next
=
p_
current
->
p_next
;
free
(
p_
dict
->
p_entries
[
i
]
->
psz_key
);
free
(
p_
current
->
psz_key
);
free
(
p_current
);
free
(
p_current
);
p_current
=
p_next
;
p_current
=
p_next
;
}
}
...
@@ -463,9 +463,6 @@ vlc_dictionary_value_for_key( const vlc_dictionary_t * p_dict, const char * psz_
...
@@ -463,9 +463,6 @@ vlc_dictionary_value_for_key( const vlc_dictionary_t * p_dict, const char * psz_
if
(
!
p_entry
)
if
(
!
p_entry
)
return
kVLCDictionaryNotFound
;
return
kVLCDictionaryNotFound
;
if
(
p_entry
&&
!
p_entry
->
p_next
)
return
p_entry
->
p_value
;
/* Make sure we return the right item. (Hash collision) */
/* Make sure we return the right item. (Hash collision) */
do
{
do
{
if
(
!
strcmp
(
psz_key
,
p_entry
->
psz_key
)
)
if
(
!
strcmp
(
psz_key
,
p_entry
->
psz_key
)
)
...
@@ -523,36 +520,14 @@ __vlc_dictionary_insert( vlc_dictionary_t * p_dict, const char * psz_key,
...
@@ -523,36 +520,14 @@ __vlc_dictionary_insert( vlc_dictionary_t * p_dict, const char * psz_key,
vlc_dictionary_init
(
p_dict
,
1
);
vlc_dictionary_init
(
p_dict
,
1
);
int
i_pos
=
DictHash
(
psz_key
,
p_dict
->
i_size
);
int
i_pos
=
DictHash
(
psz_key
,
p_dict
->
i_size
);
struct
vlc_dictionary_entry_t
*
p_entry
=
p_dict
->
p_entries
[
i_pos
];
struct
vlc_dictionary_entry_t
*
p_entry
;
if
(
!
p_entry
)
{
p_entry
=
p_dict
->
p_entries
[
i_pos
]
=
(
struct
vlc_dictionary_entry_t
*
)
malloc
(
sizeof
(
struct
vlc_dictionary_entry_t
));
assert
(
p_entry
);
p_entry
->
psz_key
=
strdup
(
psz_key
);
assert
(
p_entry
->
psz_key
);
p_entry
->
p_value
=
p_value
;
p_dict
->
p_entries
[
i_pos
]
->
p_next
=
NULL
;
return
;
}
if
(
p_entry
->
p_value
==
kVLCDictionaryNotFound
)
{
/* This one is fine, just high jack */
p_entry
->
psz_key
=
strdup
(
psz_key
);
p_entry
->
p_value
=
p_value
;
return
;
}
/* Hash collision here */
p_entry
=
(
struct
vlc_dictionary_entry_t
*
)
malloc
(
sizeof
(
struct
vlc_dictionary_entry_t
));
p_entry
=
(
struct
vlc_dictionary_entry_t
*
)
malloc
(
sizeof
(
struct
vlc_dictionary_entry_t
));
assert
(
p_entry
);
assert
(
p_entry
);
p_entry
->
psz_key
=
strdup
(
psz_key
);
p_entry
->
psz_key
=
strdup
(
psz_key
);
p_entry
->
p_value
=
p_value
;
p_entry
->
p_value
=
p_value
;
p_entry
->
p_next
=
p_dict
->
p_entries
[
i_pos
];
p_entry
->
p_next
=
p_dict
->
p_entries
[
i_pos
];
p_dict
->
p_entries
[
i_pos
]
=
p_entry
;
p_dict
->
p_entries
[
i_pos
]
=
p_entry
;
if
(
rebuild
)
if
(
rebuild
)
{
{
/* Count how many items there was */
/* Count how many items there was */
...
@@ -564,12 +539,11 @@ __vlc_dictionary_insert( vlc_dictionary_t * p_dict, const char * psz_key,
...
@@ -564,12 +539,11 @@ __vlc_dictionary_insert( vlc_dictionary_t * p_dict, const char * psz_key,
struct
vlc_dictionary_t
new_dict
;
struct
vlc_dictionary_t
new_dict
;
int
i_new_size
=
(
(
p_dict
->
i_size
+
2
)
*
3
)
/
2
;
/* XXX: this need tuning */
int
i_new_size
=
(
(
p_dict
->
i_size
+
2
)
*
3
)
/
2
;
/* XXX: this need tuning */
int
i
;
int
i
;
vlc_dictionary_init
(
&
new_dict
,
i_new_size
);
vlc_dictionary_init
(
&
new_dict
,
i_new_size
);
for
(
i
=
0
;
i
<
p_dict
->
i_size
;
i
++
)
for
(
i
=
0
;
i
<
p_dict
->
i_size
;
i
++
)
{
{
p_entry
=
p_dict
->
p_entries
[
i
];
p_entry
=
p_dict
->
p_entries
[
i
];
while
(
p_entry
)
;
while
(
p_entry
)
{
{
__vlc_dictionary_insert
(
&
new_dict
,
p_entry
->
psz_key
,
__vlc_dictionary_insert
(
&
new_dict
,
p_entry
->
psz_key
,
p_entry
->
p_value
,
p_entry
->
p_value
,
...
@@ -577,6 +551,7 @@ __vlc_dictionary_insert( vlc_dictionary_t * p_dict, const char * psz_key,
...
@@ -577,6 +551,7 @@ __vlc_dictionary_insert( vlc_dictionary_t * p_dict, const char * psz_key,
p_entry
=
p_entry
->
p_next
;
p_entry
=
p_entry
->
p_next
;
}
}
}
}
vlc_dictionary_clear
(
p_dict
);
vlc_dictionary_clear
(
p_dict
);
p_dict
->
i_size
=
new_dict
.
i_size
;
p_dict
->
i_size
=
new_dict
.
i_size
;
p_dict
->
p_entries
=
new_dict
.
p_entries
;
p_dict
->
p_entries
=
new_dict
.
p_entries
;
...
@@ -603,14 +578,6 @@ vlc_dictionary_remove_value_for_key( const vlc_dictionary_t * p_dict, const char
...
@@ -603,14 +578,6 @@ vlc_dictionary_remove_value_for_key( const vlc_dictionary_t * p_dict, const char
if
(
!
p_entry
)
if
(
!
p_entry
)
return
;
/* Not found, nothing to do */
return
;
/* Not found, nothing to do */
if
(
!
p_entry
->
p_next
)
{
free
(
p_entry
->
psz_key
);
free
(
p_entry
);
p_dict
->
p_entries
[
i_pos
]
=
NULL
;
return
;
}
/* Hash collision */
/* Hash collision */
p_prev
=
NULL
;
p_prev
=
NULL
;
do
{
do
{
...
...
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